google-apps-script - ReferenceError: 数组未定义 getRange().setvalues()
问题描述
我一直在尝试在某个列中设置值,由于某种原因我无法弄清楚它说我的数组没有定义。
function myFunction() {
var Date1 = new Date(); // Today's date
var Sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var arr = Sheet.getRange("AB2:AB6").getValues(); // Recruitment Dates
var Rowlimit = arr.length;
var DaysArr = [new Array()];
for(i = 0 ; i< Rowlimit; i++)
{
var TodayTime = Date1.getTime();
var RecDayTime = (new Date(arr[i][0])).getTime(); //converting from string to Date Type, and converting to the miliseconds number.
var DaysBetween = Math.abs(Math.floor((TodayTime-RecDayTime)/(24*3600*1000))); // Getting the difference in miliseconds and converting the miliseconds to days
Logger.log(DaysBetween);
DaysArr[0].push(DaysBetween);
}
Logger.log(DaysArr);
Logger.log(DaysArr[0]);
Sheet.getRange("AA2:AA6").setValues(Daysarr);
}
下面是执行日志,对不起,奇怪的语言,只是驱动器是用希伯来语设置的
11:03:34 הודעה ההפעלה התחילה
11:03:33 מידע 95.0
11:03:33 מידע 529.0
11:03:33 מידע 382.0
11:03:33 מידע 200.0
11:03:33 מידע 180.0
11:03:33 מידע [[95.0, 529.0, 382.0, 200.0, 180.0]]
11:03:33 מידע [95.0, 529.0, 382.0, 200.0, 180.0]
11:05:25 שגיאה ReferenceError: Daysarr is not defined
解决方案
修改点:
- 在您的脚本中,
DaysArr
已声明。但在Sheet.getRange("AA2:AA6").setValues(Daysarr);
,Daysarr
被使用。我认为您的错误消息的原因是由于这个。 - 作为脚本的另一个修改点,
Logger.log(DaysArr[0]);
是[95.0, 529.0, 382.0, 200.0, 180.0]
. 但是在你的脚本中,Sheet.getRange("AA2:AA6").setValues(Daysarr);
. 在这种情况下,我认为需要转置该值。
当以上几点反映到您的脚本时,它变成如下。
从:
Sheet.getRange("AA2:AA6").setValues(Daysarr);
到:
Sheet.getRange("AA2:AA6").setValues(DaysArr[0].map(e => [e]));
参考:
推荐阅读
- java - micronaut petstore 一个从 java 到 groovy 的代码段
- docker - Hyperledger Fabric docker-compose CORE_PEER_GOSSIP_BOOTSTRAP
- javascript - Sort() 不适用于按字母顺序排列的列表
- installshield - InstallShield 在取消删除后部分删除程序
- mongodb - 比较MongoDB中的日期
- python - ImportError:无法从“模块”导入名称“变量”
- android - APK:与版本号(SO.XY)相关的本机库名称问题
- java - 在 Java 包上使用“ls”命令时出现不支持的方案错误
- firebase - GCM 到 FCM 迁移:客户订阅问题
- c# - 扩展 AspNetCore.Identity.EntityFrameworkCore.UserStore (V2.1.3)