You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用App Script自动定时发送谷歌表格数据快照至邮箱或社交应用

谷歌表格自动生成数据快照并每日推送实现方案

一、核心实现思路

  • 借助App Script读取指定区域数据,生成结构化快照(HTML表格/纯文本)
  • 调用邮件API或社交应用Webhook完成快照推送
  • 设置时间驱动触发器,实现每日自动执行任务

二、具体代码实现(邮件推送版)

1. 生成HTML格式数据快照

HTML格式的快照在邮件中能直接展示结构化表格,比图片更易读:

function generateHtmlSnapshot() {
  // 替换为你的表格名称和目标数据区域
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("数据日报");
  const targetRange = sheet.getRange("A1:D20"); // 根据实际需求修改区域
  const data = targetRange.getValues();
  const headers = data[0];
  const rows = data.slice(1);

  // 构建HTML表格结构
  let html = "<table border='1' cellpadding='5' cellspacing='0' style='border-collapse: collapse;'>";
  // 渲染表头
  html += "<tr style='background-color: #f0f0f0;'>";
  headers.forEach(header => {
    html += `<th>${header}</th>`;
  });
  html += "</tr>";
  // 渲染数据行
  rows.forEach(row => {
    html += "<tr>";
    row.forEach(cell => {
      html += `<td>${cell || ""}</td>`; // 处理空单元格,避免显示undefined
    });
    html += "</tr>";
  });
  html += "</table>";

  return html;
}

2. 发送邮件函数

将生成的HTML快照作为邮件正文发送:

function sendSnapshotEmail() {
  const recipient = "boss@company.com"; // 替换为老板的邮箱地址
  const subject = `每日数据快照 - ${new Date().toLocaleDateString()}`;
  const htmlBody = `
    <p>您好,以下是今日的数据快照:</p>
    ${generateHtmlSnapshot()}
    <p>数据为系统自动生成,如有疑问请随时联系我。</p>
  `;

  // 发送HTML格式邮件
  MailApp.sendEmail({
    to: recipient,
    subject: subject,
    htmlBody: htmlBody,
    noReply: true // 可选,使用noreply邮箱发送,避免回复干扰
  });
}

3. 设置每日定时触发器

  1. 在脚本编辑器界面,点击左侧「触发器」图标(时钟形状)
  2. 点击「添加触发器」,配置参数:
    • 选择运行函数:sendSnapshotEmail
    • 事件源:「时间驱动」
    • 触发器类型:「日计时器」
    • 执行时间:比如「上午9点到10点」(根据需求调整)
  3. 保存后完成授权(首次运行会提示权限申请,按步骤操作即可)

三、扩展到社交应用推送(以Slack/企业微信为例)

1. Slack推送(使用Incoming Webhook)

先在Slack创建Incoming Webhook并获取URL,再编写推送函数:

function sendToSlack() {
  const webhookUrl = "你的Slack Webhook URL";
  const snapshotHtml = generateHtmlSnapshot();
  const payload = {
    text: `每日数据快照(${new Date().toLocaleDateString()})`,
    attachments: [{
      text: snapshotHtml,
      mrkdwn_in: ["text"]
    }]
  };

  UrlFetchApp.fetch(webhookUrl, {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload)
  });
}

将触发器的运行函数改为sendToSlack即可。

2. 企业微信推送(使用群机器人)

在企业微信群创建机器人并获取Webhook URL,编写推送函数:

function sendToWeCom() {
  const webhookUrl = "你的企业微信机器人Webhook URL";
  // 将HTML转为纯文本(企业微信机器人对HTML支持有限,可自行调整为markdown格式)
  const snapshotText = generateHtmlSnapshot().replace(/<[^>]+>/g, "");
  const payload = {
    msgtype: "text",
    text: {
      content: `每日数据快照(${new Date().toLocaleDateString()})\n${snapshotText}`
    }
  };

  UrlFetchApp.fetch(webhookUrl, {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload)
  });
}

四、注意事项

  • 首次运行脚本需授权App Script访问谷歌表格、邮件及网络服务,若遇到授权提示,需在「高级」选项中确认访问
  • 若目标区域包含合并单元格或特殊格式,需调整generateHtmlSnapshot函数适配
  • 定时触发器的时间基于谷歌服务器时区,可在脚本编辑器「项目设置」中修改为本地时区

内容的提问来源于stack exchange,提问作者Nerd Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 10:02:37