- Вы хотите уменьшить стоимость процесса для помещения значений в электронную таблицу.
Вы хотите улучшить следующую часть.
for(var j = 1; j < data.length;j++){
if(data[j][colToCheck-1] != "copied"){
sheetMaster.appendRow(data[j]);
sheet.getRange((j+1), colToCheck).setValue("copied");
SpreadsheetApp.flush();
}
}
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Точка модификации:
- Чтобы снизить стоимость процесса, описанного выше, я предлагаю использовать
setValues
вместо appendRow
и setValue
. Ссылка
Модифицированный скрипт:
Когда ваш скрипт модифицируется, он становится следующим:
С:
for(var j = 1; j < data.length;j++){
if(data[j][colToCheck-1] != "copied"){
sheetMaster.appendRow(data[j]);
sheet.getRange((j+1), colToCheck).setValue("copied");
SpreadsheetApp.flush();
}
}
Кому:
var copiedValues = [];
var putValues = [];
for(var j = 1; j < data.length;j++){
if(data[j][colToCheck-1] != "copied"){
putValues.push(data[j]);
}
copiedValues.push(["copied"]);
}
if (putValues.length > 0) { // Added
sheet.getRange(2, colToCheck, copiedValues.length, copiedValues[0].length).setValue(copiedValues);
sheetMaster.getRange(sheetMaster.getLastRow() + 1, 1, putValues.length, putValues[0].length).setValues(putValues);
}
Ссылки:
I ' я не уверен насчет вашей фактической таблицы. Поэтому, если я неправильно понял ваш вопрос, а это не то направление, которое вам нужно, я прошу прощения.