Если я вас правильно понимаю:
- У вас есть несколько строк данных и вы хотите создать событие календаря для каждой строки.
- Вы хотите избежать создания событий для строк, чьи
D.O#
соответствует событию, которое уже было создано.
Если это так, то вы можете использовать массив для отслеживания всех D.O#
, которые создали свои события. Идея состоит в том, чтобы добавить D.O#
к массиву через pu sh и для каждой итерации проверять, находится ли текущий D.O#
в массиве (используя indexOf ).
Это может быть что-то в следующих строках (см. Встроенные комментарии, чтобы получить подробную информацию о том, что код делает в критических строках):
function createCalendarEvent() {
var sheet = SpreadsheetApp.getActiveSheet();
var calendar = CalendarApp.getCalendarById('e3pbfcblhsmehusmotijp1r9e8@group.calendar.google.com');
var startRow = 2;
var numRows = sheet.getLastRow();
var numColumns = sheet.getLastColumn();
var dataRange = sheet.getRange(startRow, 1, numRows - 1, numColumns);
var data = dataRange.getValues();
var complete = "Done";
var sentIDs = []; // Array to track D.O that have been sent
for (var i=0; i < data.length; ++i) {
var row = data[i];
var DONumber = row[1];
var eventID = row[13];
if (eventID == complete) { // If event was created in a previous script execution,
sentIDs.push(DONumber); // add D.O. to array to avoid same D.O. being sent
}
if (sentIDs.indexOf(DONumber) == -1) {
sentIDs.push(DONumber); // Add to array to avoid same D.O. being sent
var Address = row[2];
var contact = row[3];
var phone = row[4];
var time = row[5];
var instructions = row[6];
var assign = row[7];
var notify = row[8];
var goods = row[9];
var quantity = row[10];
var date = new Date(row[11]);
var edate = new Date(row[12]);
var currentCell = sheet.getRange(startRow + i, numColumns);
calendar.createEvent(contact, date, edate, {
description: contact + '\r' + phone + '\r' + instructions + '\r' + goods + '\r' + quantity
});
currentCell.setValue(complete);
}
}
}
Одна вещь, которую нужно выделить, заключается в том, что eventID
используется для добавления соответствующего D.O.
в массив sentIDs
, чтобы избежать создания событий, которые совместно используют тот же D.O.
с событием, которое было создано при предыдущем выполнении кода (см. Встроенные комментарии).
Примечание. В предоставленном образце отсутствуют открывающие скобки для for
l oop. Это может привести к тому, что ваш код не будет работать должным образом. Я исправил это в приведенном здесь примере.
Надеюсь, это поможет.