Требуется редактирование сценария Google Sheets - проверка данных - PullRequest
0 голосов
/ 23 января 2020

У меня есть скрипт ниже в моих документах Google. Он обновляет только те ячейки, которые я обновляю вручную, а не ячейки, которые обновляются с помощью формулы. Как я могу отредактировать это?

Спасибо,


function onEdit(){

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Info")

  var activeCell = ss.getActiveCell()

  if(activeCell.getColumn() == 1 && activeCell.getRow() > 1){

    activeCell.offset(0, 1).clearContent().clearDataValidations();

    var makes = datass.getRange(1, 1, 1,  datass.getLastColumn()).getValues();

    var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;

    if(makeIndex != 0) {

    var validationRange = datass.getRange(3, makeIndex, datass.getLastRow());
    var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
    activeCell.offset(0, 4).setDataValidation(validationRule);

    }

  }

}

1 Ответ

0 голосов
/ 23 января 2020

Это предполагаемое поведение, которое onEdit срабатывает только при ручном редактировании.

Но есть обходной путь:

  • Создайте дополнительный лист, в который вы импортируете исходный лист с помощью IMPORTRANGE
  • Замените ваш onEdit триггер на устанавливаемый onChange триггер
  • onChange способен обнаруживать обновления IMPORTRANGE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...