Когда вы вызываете getValues()
, 2D-массив данных, содержащихся в диапазоне, копируется в память среды выполнения ваших скриптов. После этого, если вы измените данные диапазона (используя вызовы, такие как setValues()
), будут изменены данные на вашем листе, но не данные в вашем 2D-массиве.
Подробнеев частности, ошибка в вашем коде заключается в оценке условия оператора if . При доступе к 2D-массиву вы учитываете delCol
, хотя на самом деле вам это не нужно. Ниже приведено исправление вашего кода:
function deleteRows() {
var delCol = 0;
var data = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("2:2").getValues();
var sheet = SpreadsheetApp.getActiveSheet();
for(var i = 0; i < data[0].length; i++) {
if (data[0][i].indexOf("txt-to-delete") > -1 || data[0][i] == "") {
sheet.deleteColumn(i - delCol + 1);
delCol++;
}
}
}