如何使用Google Script读取谷歌表格多列数据发送邮件提醒
解决方案
你只需要调整3处代码即可实现同时读取A、D两列内容并插入邮件,修改后的完整代码如下:
function sendEmails() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 1; // 第一行要处理的数据行 var numRows = 300; // 要处理的总行数 // 选中A1:P300的单元格范围 var dataRange = sheet.getRange(startRow, 1, numRows, 16); // 获取范围内所有单元格的值 var data = dataRange.getValues(); var dayofemail = data[0][15]; // 改动1:解构时新增D列(对应索引3)的取值变量equipDesc data.reduce((m, [qua_num, _, _, equipDesc,,,,,,,daysPastCal,emailAddress]) => { if (daysPastCal > -14) { // 改动2:存入Map的内容改为同时包含A列和D列的拼接内容 const item = `${qua_num}(${equipDesc})` m.set(emailAddress, m.has(emailAddress) ? [...m.get(emailAddress), item] : [item]); } return m; }, new Map()) .forEach((itemList, emailAddress) => { // 改动3:拼接邮件内容时直接使用已经包含两列信息的列表 var message = itemList.join("\n") + '\n以上设备即将到期或已超出校准有效期,请联系QA确认更换或送外重新校准。'; var subject = '自动提醒:设备校准检查 '; MailApp.sendEmail(emailAddress, subject + dayofemail, message); }); }
改动说明
- 谷歌表格的列在
getValues()返回的二维数组中索引从0开始计数,A列对应索引0,D列对应索引3,所以在数组解构时新增了D列的取值变量equipDesc - 原来的Map中只存了A列的编号,现在改为将A列和D列的内容拼接后存入,你也可以根据自己的需求调整拼接格式,比如用换行、分隔符等
- 如果你需要把两列内容分开排版,也可以直接存二维数组,拼接邮件时分别调用即可,示例如下:
// reduce部分修改为 m.set(emailAddress, m.has(emailAddress) ? [...m.get(emailAddress), [qua_num, equipDesc]] : [[qua_num, equipDesc]]) // 拼接邮件部分修改为 var message = itemList.map(item => `设备编号:${item[0]},设备信息:${item[1]}`).join("\n") + 邮件后缀内容
内容的提问来源于stack exchange,提问作者Goutham
相关产品推荐
相关产品推荐

