Я создал лист Google для отправки грузовиков для доставки нашей компании. У нас есть лист под названием «Незапланированные задания», в котором перечислены все задания, которые нужно выполнить. При планировании маршрута на день они перемещаются на листы, названные в честь каждого водителя. Когда водитель выполнит свои поставки, он отметит каждую выполненную работу. Каждые 5 минут запускается сценарий, который будет перемещать задания, помеченные как завершенные, на лист под названием «Завершенные задания» и вставлять имя драйвера (столбец O), а также отметку даты и времени (столбец N), когда задание завершено.Вставка данных в массив foreach перед переходом на другой лист Google
Сценарий, который мы сейчас довольно медленный, поэтому я пытаюсь сделать это, используя массив, но не имеющий никакого успеха. Я очень новичок в этом, поэтому я был бы признателен, если кто-то достаточно, чтобы ответить, может объяснить, что делает их код.
код Я пытаюсь использовать: комментарий
function reschedule() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName('Driver'));
var sheet = ss.getSheetByName('Driver');var clearrange = sheet.getRange(3, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
var targetSheet = ss.getSheetByName('Completed');
var val = sheet.getRange(3, 1, sheet.getLastRow() - 1, sheet.getLastColumn())
.getValues();
var arr = [],
rowsToWriteBack = [];
rowsToWriteBack.push();
val.forEach(function (r, i) {
r[3] == 'Completed' ? arr.push(r) + Utilities.formatDate(new Date(), "GMT-4", "MM-dd-yyyy EEE hh:mm a") : rowsToWriteBack.push(r)
});
if (arr.length > 0) {
targetSheet.getRange(targetSheet.getLastRow() + 1, 1, arr.length, arr[0].length)
.setValues(arr);
clearrange.clear({contentsOnly:true});
sheet.getRange(3, 1, rowsToWriteBack.length, rowsToWriteBack[0].length)
.setValues(rowsToWriteBack);
}
}
arr.push (r) вернет индекс r в обр. так что arr.push (r) + somedate странно –