请求:将谷歌表格两个工作表分别转CSV并添加至邮件附件
谷歌表格多工作表转CSV并作为邮件附件发送
我帮你修改了原脚本,直接实现把两个工作表转成CSV并作为邮件附件发送的功能,代码如下:
function sendSheetsAsCsv() { // 配置参数,替换成你自己的内容 const sheetNames = ["工作表1", "工作表2"]; // 要转换的两个工作表名称 const recipient = "收件人邮箱@example.com"; // 收件人邮箱 const subject = "谷歌表格CSV附件"; // 邮件主题 const body = "这是你要的两个工作表的CSV文件附件。"; // 邮件正文 // 封装获取工作表CSV Blob的函数 function getSheetAsCsv(sheetName) { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ssId = ss.getId(); const sheet = ss.getSheetByName(sheetName); if (!sheet) throw new Error(`找不到名为${sheetName}的工作表`); const sheetId = sheet.getSheetId(); const url = `https://docs.google.com/spreadsheets/d/${ssId}/export?gid=${sheetId}&format=csv`; const requestData = { method: "GET", headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() } }; const response = UrlFetchApp.fetch(url, requestData); // 返回CSV的Blob对象,用于邮件附件 return response.getBlob().setName(`${sheetName}.csv`); } try { // 获取两个工作表的CSV Blob const attachments = sheetNames.map(name => getSheetAsCsv(name)); // 发送邮件 GmailApp.sendEmail(recipient, subject, body, { attachments: attachments }); Logger.log("邮件发送成功!"); } catch (error) { Logger.log(`发送失败:${error.message}`); } }
关键说明
- 先修改代码开头的配置参数:把工作表名称、收件人邮箱、邮件主题/正文换成你自己的内容
- 封装的
getSheetAsCsv函数负责把单个工作表转成CSV格式的Blob,直接作为邮件附件使用,无需再存入Drive - 第一次运行脚本时,会弹出授权提示,需要你授权脚本访问谷歌表格和Gmail的权限
- 如果要添加更多工作表,直接在
sheetNames数组里补充对应的名称即可
内容的提问来源于stack exchange,提问作者Angelito Saliva
相关产品推荐
相关产品推荐

