Пример кода ниже может помочь.Я несколько упростил ваш код, поскольку вопрос был о передовой практике или, как Google называет это «пакетными операциями».Это включает использование getValues()
для извлечения всех данных в массив JavaScript за один ввод / вывод.Таким образом, все последующие сравнения и назначения выполняются для объектов в памяти и, следовательно, выполняются быстро.Аналогично, один вызов setValues()
используется для записи данных в электронную таблицу за один ввод / вывод.Это гораздо эффективнее, чем чтение содержимого по одной ячейке за раз.
function moveToQA() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var targetSheet = ss.getSheetByName("QA");
var input_range = ss.getRange("A:A"); // Entire column
var values_in = [], values_out = [];
// getValues() pulls all the values into a multi-dimensional array in one hit.
// This allows values to be processed in-memory.
values_in = input_range.getValues();
for( var i = 0; i < lastRow; i++ ) {
var cellValue = values_in[i][0];
if (cellValue === "X") {
values_out.push(["Yes"]);
} else {
values_out.push(["No"]);;
}
}
// Now write out the new values in one hit.
var output_range = targetSheet.getRange(1,1,lastRow);
output_range.setValues(values_out);
}
Служба кэширования на самом деле не относится к вашей программе.Как сказано в документации, это необходимо для сохранения информации между выполнением сценария.Вариант использования для этого - сценарий GAS, опубликованный в виде веб-приложения, который предоставляет простой веб-сервис поиска на основе содержимого электронной таблицы.Вместо того чтобы читать данные из электронной таблицы при каждом вызове веб-службы, сценарий сначала проверяет, доступны ли данные из службы кэширования.Если это не так, данные электронной таблицы читаются и сохраняются в кэше в следующий раз.