onChange для запуска ТОЛЬКО если у A3 есть данные - Google Apps Script / Google Sheets - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь запустить этот скрипт, только если видит данные в A3. данные поступают на этот лист с другого листа. Я попытался onChange, но он не сработал, когда новые данные поступили в «Требуется пополнение». добавьте onchange к триггерам проекта, но все еще не запускаете скрипт.

function TopUpNeeded() {

  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('TOP UP NEEDED'), true);
  var sheet = spreadsheet.getSheetByName('TOP UP NEEDED');
  sheet.getRange('J3').activate().setFormula('=QUERY({\'SKU & Qty\'!$A$3:$C},"SELECT * WHERE Col1 MATCHES \'" & JOIN("|",FILTER(I2:I, NOT(ISBLANK(I2:I)))) & "\' ")');

}  

также пробовал этот код выше моего кода, но безрезультатно.

  function onChange() {
    var sheet = SpreadsheetApp.getActive();
    ScriptApp.newTrigger("TopUpNeeded")
     .forSpreadsheet(sheet)
     .onChange()
     .create();
  }

Заранее спасибо

1 Ответ

1 голос
/ 13 февраля 2020

onChange не запускается, если изменения не были внесены человеком, см. ограничения

Исключение составляют случаи, когда данные обновляются по формуле ячейки IMPORTRANGE

Вы можете вставить в ячейку «A3» листа «Требуется пополнение» формулу

IMPORTRANGE(spreadsheet_url, range_string)

, указав электронную таблицу и диапазон, который предполагается заполнить содержимое ячейки.

В этом случае ваша первая функция будет запускаться при срабатывании onChange каждый раз, когда содержимое A3 обновляется.

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