Google App Script开发需求:遍历列并发送当日日期对应行信息邮件
Google App Script 实现当日日期匹配邮件发送
以下是实现需求的完整代码,附带关键细节说明:
function sendDailyGreetings() { // 替换为你的表格ID(可从表格URL中获取) const spreadsheetId = "你的表格ID"; // 替换为目标工作表名称 const sheetName = "Sheet1"; // 替换为收件人邮箱 const recipientEmail = "xxx@example.com"; // 获取工作表数据 const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName); const data = sheet.getDataRange().getValues(); // 处理当日日期:去除时分秒,只保留日期部分 const today = new Date(); today.setHours(0, 0, 0, 0); const todayTimestamp = today.getTime(); // 跳过表头,遍历数据行 for (let i = 1; i < data.length; i++) { const row = data[i]; const rowDate = new Date(row[0]); // Date列在第1列(索引0) // 处理该行日期,去除时分秒 rowDate.setHours(0, 0, 0, 0); const rowDateTimestamp = rowDate.getTime(); // 比较日期是否匹配 if (rowDateTimestamp === todayTimestamp) { const greeting = row[1]; // Greeting列在第2列(索引1) const message = row[2]; // Message列在第3列(索引2) // 发送邮件 MailApp.sendEmail({ to: recipientEmail, subject: "今日问候", body: `${greeting}\n\n${message}` }); } } }
关键注意事项:
- 表格ID获取:打开你的Google表格,URL中
d/和/edit之间的字符串就是表格ID。 - 日期比较逻辑:直接比较
Date对象可能因为时分秒差异导致匹配失败,所以统一将日期转为去除时分秒的时间戳再比较,确保仅匹配日期部分。 - 列索引对应:代码中假设Date是第1列(索引0)、Greeting是第2列(索引1)、Message是第3列(索引2),如果你的表格列顺序不同,需要调整对应的索引值。
- 权限设置:首次运行脚本时,会提示授权,按照指引完成授权即可。
- 定时触发(可选):如果需要每天自动执行,可在App Script编辑器的「编辑」→「当前项目的触发器」中添加时间驱动触发器,设置为每天固定时间运行。
内容的提问来源于stack exchange,提问作者user8215352
相关产品推荐
相关产品推荐

