求谷歌表格脚本:提取活动行单元格生成表格并发送邮件
谷歌表格脚本实现方案
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. 配置与使用步骤
- 修改变量:根据你的实际表格结构,调整代码中注释标注的变量(比如工作表名称、提取列号、收件人邮箱等)。
- 添加按钮:
- 返回谷歌表格,点击「插入」>「绘图」,绘制两个按钮(如“提取数据”和“发送邮件”),保存后关闭绘图窗口。
- 点击绘制好的按钮,选择「分配脚本」,分别输入
extractAndInsertData和sendTableEmail。
- 测试功能:选中源工作表中的某一行数据,点击“提取数据”按钮,数据会自动插入到目标工作表;确认数据无误后,点击“发送邮件”按钮完成发送。
3. 注意事项
- 首次运行脚本时,需要授权谷歌脚本访问你的表格和邮件服务,按提示完成授权即可。
- 若目标工作表有表头,确保
targetStartRow设置为表头的下一行。 - 要提取不同列,修改
extractColumns数组中的列号即可(比如提取A、B、D列,设置为[1,2,4])。
内容的提问来源于stack exchange,提问作者Bakhtavar Hafeez
相关产品推荐
相关产品推荐

