Google sheet не запускает никаких событий в .appendRow() из другого скрипта

#javascript #google-apps-script #google-sheets

#javascript #google-apps-script #google-sheets

Вопрос:

У меня есть скрипт, в котором пользователь вводит некоторую информацию и отправляет. При отправке я запускаю .appendRow() , который выполняется успешно. С помощью имеющихся у меня данных я пытаюсь установить цвета фона для нескольких ячеек на основе значения другого.

Пример. Если J2, то setBackgroundColor("yellow") для J2: L2

Я создал скрипт, прикрепленный к электронной таблице, где я пытаюсь создать триггер для этого. Созданный мной триггер работает, когда я вручную редактирую электронную таблицу. Однако onEdit() ни onChange() один из них не работал, когда я appendRow() . appendRow() Не запускает событие в электронной таблице?

Вот мой сценарий для триггера / события.

 function onEdit(e){
  colorBasedOnStatus(e.range.getRow());
}

function colorBasedOnStatus(rowIndex) {
  Logger.log(rowIndex);
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Log");
  var range = sheet.getRange("J" rowIndex ":L" rowIndex);
  var values = range.getValues();
  Logger.log(values);
  var status = values[0][0];
  Logger.log("status: "   status);

  range.setFontColor("white");
  if(status === "Denied"){
    range.setBackground("#FF6666");
  } else if(status == "Approved") {
    range.setBackground("#66C285");
  } else {
    range.setBackground("#FFE271");
  }

  SpreadsheetApp.flush();
}
  

Комментарии:

1. Как пользователи отправляют свои входные данные?

2. прямо сейчас это скрипт, который позже станет гаджетом на сайте Google

3. Тогда вам не нужен никакой триггер … не могли бы вы показать код, который вы используете, пожалуйста?

4. Я отредактировал сообщение, чтобы включить код

5. на самом деле это была функция, которая добавляет интересующую меня строку… Я думаю, вы могли бы просто позволить этому скрипту вызывать вашу функцию «colorBasedOnStatus (RowIndex)», не требуя никакого триггера.

Ответ №1:

Я думаю, вы могли бы просто позволить этому скрипту вызывать вашу colorBasedOnStatus(rowIndex) функцию без какого-либо триггера и напрямую интегрироваться в функцию, которую вы используете для добавления новой строки.

Таким образом, вам не нужна настройка триггера, и ваш код также упрощается.