如何修改Google Apps Script实现每日定时发送指定Sheet标签邮件?
修改App Script实现每日定时发送邮件
1. 修正原脚本错误并优化
原脚本存在MIME类型配置错误,同时对代码做了小幅优化,修改后的完整代码如下:
function sendSheetTab() { var sheetName = 'SHEETNAME'; // 替换为你的目标工作表名称 var destinationEmail = 'yourname@your.com'; // 替换为接收邮件的邮箱地址 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(sheetName); // 构造PDF导出链接 var exportUrl = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export?gid=" + sheet.getSheetId() + "&format=pdf"; var options = { "method": "GET", "headers": { "authorization": "Bearer " + ScriptApp.getOAuthToken() } }; var result = UrlFetchApp.fetch(exportUrl, options); var contents = result.getContent(); var subject = '每日报表: ' + sheetName; var body = '这是今日的工作表PDF附件。'; // 修正MIME类型为PDF对应的正确值 GmailApp.sendEmail(destinationEmail, subject, body, { attachments: [{ fileName: sheetName + ".pdf", content: contents, mimeType: "application/pdf" }] }); }
2. 设置每日定时执行触发器
有两种方式可以实现脚本每日自动运行:
方式一:手动在脚本编辑器配置
- 打开Google表格,点击顶部菜单栏「工具 > 脚本编辑器」
- 点击左侧菜单栏的闹钟图标(「触发器」入口)
- 点击「添加触发器」按钮,配置以下参数:
- 选择要运行的函数:
sendSheetTab - 选择事件源:「时间驱动」
- 选择时间类型:「日计时器」
- 选择具体执行时段:比如「上午9点到10点」
- 选择要运行的函数:
- 点击「保存」,按提示完成权限授权即可。
方式二:用代码创建触发器
在脚本编辑器中新增以下函数,运行一次即可自动创建每日定时触发器:
function createDailyTrigger() { // 先删除已存在的同名触发器,避免重复创建 var existingTriggers = ScriptApp.getProjectTriggers(); for (var i = 0; i < existingTriggers.length; i++) { if (existingTriggers[i].getHandlerFunction() === 'sendSheetTab') { ScriptApp.deleteTrigger(existingTriggers[i]); } } // 创建每日上午9点执行的触发器,可修改atHour参数调整时间 ScriptApp.newTrigger('sendSheetTab') .timeBased() .everyDays(1) .atHour(9) .create(); }
- 点击脚本编辑器的运行按钮执行
createDailyTrigger,按提示完成权限授权后,触发器会自动生效。
内容的提问来源于stack exchange,提问作者Daniela Patta
相关产品推荐
相关产品推荐

