Google Sheets脚本调用setValues时报ReferenceError: Daysarr未定义如何解决
问题原因
- 变量名大小写拼写错误:JavaScript 是大小写敏感的编程语言,你代码中声明的变量为
DaysArr(第二个单词首字母A大写),但最后调用setValues方法时写的是Daysarr(第二个单词首字母a小写),因此程序判定该变量未定义,触发报错。 - 隐含维度不匹配问题:Google Sheets 的
setValues()方法要求传入的二维数组结构,与选中的写入范围的行列数完全对应。你当前构造的DaysArr是 1 行 5 列的结构[[95.0, 529.0, 382.0, 200.0, 180.0]],但你选中的写入范围AA2:AA6是 5 行 1 列,仅修正变量名后仍会触发维度不匹配的报错。
修正后代码
function myFunction() { var Date1 = new Date(); // 获取当前日期 var Sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var arr = Sheet.getRange("AB2:AB6").getValues(); // 读取入职日期列 var Rowlimit = arr.length; var DaysArr = []; // 调整初始化方式,按行存储结果适配单列写入 for(i = 0 ; i< Rowlimit; i++) { var TodayTime = Date1.getTime(); var RecDayTime = (new Date(arr[i][0])).getTime(); // 将字符串格式的日期转为时间戳 var DaysBetween = Math.abs(Math.floor((TodayTime-RecDayTime)/(24*3600*1000))); // 计算两个日期的间隔天数 Logger.log(DaysBetween); DaysArr.push([DaysBetween]); // 每个结果单独作为一行 } Logger.log(DaysArr); Logger.log(DaysArr[0]); Sheet.getRange("AA2:AA6").setValues(DaysArr); // 修正变量名大小写 }
内容的提问来源于stack exchange,提问作者endom
相关产品推荐
相关产品推荐

