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

求谷歌表格脚本:提取活动行单元格生成表格并发送邮件

谷歌表格脚本实现方案

1. 核心脚本代码

打开谷歌表格,点击「扩展程序」>「Apps 脚本」,粘贴以下代码:

// 提取活动行数据并插入到目标工作表的指定表格
function extractAndInsertData() {
  // 可根据你的需求修改以下变量
  const sourceSheetName = "数据源"; // 存放数据的源工作表名称
  const targetSheetName = "生成表格"; // 要插入表格的目标工作表名称
  const extractColumns = [1, 3, 5]; // 要提取的列号(A列=1,B列=2,以此类推)
  const targetStartRow = 2; // 目标表格的起始行(跳过表头用)
  const targetStartCol = 1; // 目标表格的起始列

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName(sourceSheetName);
  const activeRow = sourceSheet.getActiveRange().getRow();
  
  // 跳过表头行
  if (activeRow === 1) {
    SpreadsheetApp.getUi().alert("请选择数据行,不要点击表头!");
    return;
  }

  // 提取指定列的数据
  const rowData = sourceSheet.getRange(activeRow, 1, 1, sourceSheet.getLastColumn()).getValues()[0];
  const extractedData = extractColumns.map(colIndex => rowData[colIndex - 1]);

  // 插入到目标工作表的下一个空行
  const targetSheet = ss.getSheetByName(targetSheetName);
  const nextEmptyRow = targetSheet.getLastRow() + 1 > targetStartRow ? targetSheet.getLastRow() + 1 : targetStartRow;
  targetSheet.getRange(nextEmptyRow, targetStartCol, 1, extractedData.length).setValues([extractedData]);

  SpreadsheetApp.getUi().alert("数据已成功插入到目标表格!");
}

// 将目标表格的数据以邮件发送
function sendTableEmail() {
  // 可根据你的需求修改以下变量
  const targetSheetName = "生成表格"; // 存放生成表格的工作表名称
  const recipientEmail = "收件人邮箱@example.com"; // 收件人邮箱
  const emailSubject = "生成的表格数据"; // 邮件主题
  const emailBodyPrefix = "以下是最新生成的表格数据:\n\n"; // 邮件正文前缀

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = ss.getSheetByName(targetSheetName);
  const dataRange = targetSheet.getDataRange();
  const dataValues = dataRange.getValues();

  // 转换为HTML表格格式(邮件显示更美观)
  let htmlTable = "<table border='1' cellpadding='5' cellspacing='0'>";
  dataValues.forEach(row => {
    htmlTable += "<tr>";
    row.forEach(cell => {
      htmlTable += `<td>${cell || ""}</td>`;
    });
    htmlTable += "</tr>";
  });
  htmlTable += "</table>";

  // 发送双格式邮件(纯文本+HTML)
  MailApp.sendEmail({
    to: recipientEmail,
    subject: emailSubject,
    body: emailBodyPrefix + dataValues.map(row => row.join("\t")).join("\n"),
    htmlBody: emailBodyPrefix + htmlTable
  });

  SpreadsheetApp.getUi().alert("邮件已成功发送!");
}

2. 配置与使用步骤

  • 修改变量:根据你的实际表格结构,调整代码中注释标注的变量(比如工作表名称、提取列号、收件人邮箱等)。
  • 添加按钮:
    1. 返回谷歌表格,点击「插入」>「绘图」,绘制两个按钮(如“提取数据”和“发送邮件”),保存后关闭绘图窗口。
    2. 点击绘制好的按钮,选择「分配脚本」,分别输入extractAndInsertData和sendTableEmail。
  • 测试功能:选中源工作表中的某一行数据,点击“提取数据”按钮,数据会自动插入到目标工作表;确认数据无误后,点击“发送邮件”按钮完成发送。

3. 注意事项

  • 首次运行脚本时,需要授权谷歌脚本访问你的表格和邮件服务,按提示完成授权即可。
  • 若目标工作表有表头,确保targetStartRow设置为表头的下一行。
  • 要提取不同列,修改extractColumns数组中的列号即可(比如提取A、B、D列,设置为[1,2,4])。

内容的提问来源于stack exchange,提问作者Bakhtavar Hafeez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:31:05