Как видно из заголовка, в настоящее время я запускаю функцию, которая, на мой взгляд, может быть более эффективной.
По сути, в моей таблице есть столбец (k), в котором я ищу текст "delete"
in. Если этот текст найден, я просто добавляю ", removed"
к нему. Это позволяет приложению, работающему вне таблицы, знать, что эта строка не отображается, если она видит текст "removed"
.
Например, случайная строка col k может выглядеть следующим образом после запуска функции: delete, completed, removed
Проблема здесь в том, что наш лист имеет 4000 строк, и для его завершения требуется более 1000 секунд. Конечно, должен быть более быстрый способ поиска и добавления текста, а не итеративно для каждой строки в листе с помощью для l oop.
function removeDeleted() {
var ss = SpreadsheetApp.openById(BD_SPREADSHEET_ID);
var data = ss.getSheetByName(DATA_TAB);
var dataRange = data.getDataRange().getValues();
var colData = [];
for (var i = 1; i < dataRange.length; i++) {
colData.push(dataRange[i][0]);
}
for (var i = 0; i < colData.length; i++) {
// Take every cell except the first row on col Q (11), as that is the header
var comments_cell = data.getDataRange().getCell(i + 2, 11).getValue();
// Check for string "delete" inside cell
if (comments_cell.toString().indexOf("delete") !== -1 || comments_cell.toString().indexOf("Delete") !== -1) {
// Check for string "removed" not already inside cell
if (!(comments_cell.toString().indexOf("removed") !== -1)) {
// Append ", removed"
data.getDataRange().getCell(i + 2, 11).setValue(comments_cell + ", removed");
}
}
}
}
Я все еще изучаю скрипт и электронную таблицу приложений Google интеграция, так что я чувствую, что может быть некоторая избыточность с двумя циклами for. Любая помощь будет оценена.