Apps Script自动发邮件时resolution字段显示undefined问题
问题分析与解决
你的代码中resolution显示undefined的核心原因是获取数据的范围不包含目标列:
在这行代码里:
const rData = e.source.getActiveSheet().getRange(e.range.rowStart,2,2,4).getValues();
getRange的参数含义是(起始行, 起始列, 行数, 列数),这里你指定从第2列开始,只取4列(即列2、3、4、5),所以rData中每一行的数组只有4个元素(索引0到3)。但你尝试通过rData[0][19]获取数据,这个索引远超出了数组的长度,自然返回undefined。
修复方案
根据你的需求,调整getRange的列数参数,确保包含resolution所在的列:
方案1:明确指定需要的列范围
如果resolution在第21列(对应你代码里的索引19,因为起始列是2,2+19=21),那么需要把列数设为21-2+1=20,修改代码如下:
const rData = e.source.getActiveSheet().getRange(e.range.rowStart,2,1,20).getValues()[0]; // 这里把行数改成1,因为你只需要当前行的数据,不需要2行 // 直接取[0]把二维数组转成一维,后续变量可以直接用索引访问 let email = rData[0]; let name = rData[2]; let resolution = rData[19];
方案2:获取整行数据(更稳妥)
如果不确定列的位置,或者后续可能新增列,可以直接获取触发行的所有列数据:
const sheet = e.source.getActiveSheet(); const rData = sheet.getRange(e.range.rowStart, 1, 1, sheet.getLastColumn()).getValues()[0]; // 注意这里起始列改成1,确保包含所有列 // 对应调整变量的索引(因为起始列从1开始了): let email = rData[1]; // 原第2列对应索引1 let name = rData[3]; // 原第4列对应索引3 let resolution = rData[20]; // 原第21列对应索引20
内容的提问来源于stack exchange,提问作者Craig Lewis
相关产品推荐
相关产品推荐

