首页 > 解决方案 > 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

标签: google-apps-scriptgoogle-sheets

解决方案


修改点:

  • 在您的脚本中,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]));

参考:


推荐阅读