Ошибка ссылки: массив не определен getRange().setvalues()

#google-apps-script #google-sheets

Вопрос:

Я пытался установить значения в определенном столбце, и по какой-то причине, которую я не могу понять, это говорит о том, что мой массив не определен.

 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
 

Ответ №1:

Точки изменения:

  • В вашем сценарии 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]));
 

Ссылка: