Очистить содержимое в S: S, когда T: T содержит «Скопированный» Google Script - PullRequest
0 голосов
/ 25 ноября 2018

Я застрял, на первый взгляд, в простом сценарии.

Я хочу очистить содержимое из ячейки S, когда T имеет значение "Скопировано".

То, что у меня есть на данный моментэто:

function onEdit(e) {
  if(e.range.columnStart === 20) { 
    e.range.offset(0,-1).clearContent();
  }
}

Я не уверен, как включить IF.Кроме того, имейте в виду, что в столбце T есть формула, поэтому я не редактирую ее вручную, и с этим сценарием она не работает.

Это не обязательно должно быть OnEdit, я могу установитьтриггер для запуска скрипта каждую минуту, что даже лучше, но важно отфильтровать его по значению Скопировано.

Чтобы немного подробнее объяснить, как работает мой файл (пример):

1) Я добавляю комментарий в ячейку S5.

2) Мой второй сценарий выполняется каждую минуту, где он копирует значения из столбца S в столбец V.

3) В столбце T яимеют формулу (= IF (V5 <> "", IF (RegExMatch (S5, V5), "Скопировано", ""), "")), что означает, что если значение существует в столбце V5, добавьте Скопировано в ячейку T5.

4) Я ищу решение, которое, когда ячейка T: T имеет «Скопировано», удаляет диапазон ячеек S: S

Спасибо миллионам!

1 Ответ

0 голосов
/ 26 ноября 2018

Как указывает @TheWizEd, значение в T зависит от результата в другой ячейке.Однако функция OnEdit не обязательно должна реагировать на диапазон, в котором было сделано изменение.Я использовал этот код, чтобы использовать событие OnEdit для оценки значений в столбце T, а затем внести соответствующие изменения в значения в столбце S.

В столбце T используется for loop для прохождения различных строк,но соответствующее значение помещается в массив.Это позволяет выполнять один setValues в конце функции.

Функция должна быть назначена триггеру OnEdit для электронной таблицы.

function so_53469142() {

    // Setup spreadsheet and target sheet
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("so_53469142");

    // get the last row of data
    var lastRow = sheet.getLastRow();

    // get range for Column  S & T
    var values = sheet.getRange(1, 19, lastRow, 2).getValues();

    // set counter variable
    var i = 0;
    var dataArray = [];
    var masterArray = [];


    // start loop
    for (i = 0; i < lastRow; i++) {
        // Logger.log("i="+i+", S = "+values[i][0]+", T = "+values[i][1]);//DEBUG

        // empty the array
        dataArray = [];

        // test value of first row in T
        if (values[i][1] === "Copied") {
            // If value = "Copies then push blank onto array for Column S
            dataArray.push("");
        } else {
            // else push existing value for column S
            dataArray.push(values[i][0]);
        }

        // make the array 2D
        masterArray.push(dataArray);

    }

    // Update values in Column S
    sheet.getRange(1, 19, lastRow).setValues(masterArray);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...