如何用Google Apps Script提取Gmail数据填充Google Sheets匹配行对应单元格
你可以参考下方修改后的代码,核心逻辑是先读取A列所有已有的快递单号,遍历匹配到对应行后直接写入C列对应位置:
function extractDetails(message){ var emailData = { body: "Null", date: "Null", trackingno: "Null", } emailData.date = message.getDate(); emailData.body = message.getPlainBody(); // 增加匹配失败容错,避免提取不到单号时报错 const trackingMatch = emailData.body.match(/(?<=Tracking No. ).*/); if (!trackingMatch) return; emailData.trackingno = trackingMatch.toString().trim(); const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); // 获取A列所有有内容的行数据 const lastRow = activeSheet.getLastRow(); const trackingNos = activeSheet.getRange(1, 1, lastRow, 1).getValues(); // 遍历匹配单号 for (let i = 0; i < trackingNos.length; i++) { // 两侧trim避免空格导致匹配失败 if (trackingNos[i][0].toString().trim() === emailData.trackingno) { // 数组下标从0开始,表格行号从1开始,所以i+1为对应行号,C列是第3列 activeSheet.getRange(i + 1, 3).setValue(emailData.date); break; } } }
说明
- 如果表格第一行是表头,将遍历起始值改为
let i = 1即可跳过表头匹配 - 若存在A列多个相同单号的场景,删除
break语句即可给所有匹配到的行写入日期 - 新增了提取单号失败的容错逻辑,避免无单号的异常邮件导致脚本报错
内容的提问来源于stack exchange,提问作者Masterkenobi
相关产品推荐
相关产品推荐

