#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]));