У меня есть скрипт электронной таблицы с триггером onEdit. Почему-то «срабатывают» два триггера onEdit: установленный триггер и простой триггер. Я настроил onEdit для отправки электронной почты. Это было ...

0
galactikuh 19 Янв 2021 в 23:59

1 ответ

Лучший ответ

Объедините оба триггера onEdit:

Предположим, у вас есть 2 триггера onEdit. Один простой, который называется onEdit(e), и один устанавливаемый, который называется myFunction(e). Поскольку вы уже авторизовали myFunction(e) и это устанавливаемый триггер, вы можете переименовать свой простой триггер onEdit(e) на другое имя, например myFunction2(e) и поместите внутрь myFunction(e):

function myFunction(e){
  //code for the installable myFunction
  myFunction2(e) 
}

Таким образом будут срабатывать как myFunction, так и myFunction2. Если вы хотите полностью удалить myFunction2, просто удалите или закомментируйте код, связанный с этим.

Проблема с простым триггером onEdit(e):

Удалите простой триггер onEdit(e), поскольку он не может быть использован в вашем случае, потому что ваш скрипт использует службы, требующие авторизации.

  • Измените имя функции с onEdit(e) на другое, например myFunction(e).

  • Создайте устанавливаемый onEdit триггер для myFunction.

  • Чтобы создать устанавливаемый триггер для myFunction, используйте это решение. А именно, выполнить функцию create_onEdit:

    function create_onEdit(){
      ScriptApp.newTrigger('myFunction')
      .forSpreadsheet(SpreadsheetApp.getActive())
      .onEdit()
      .create(); 
    }
    

И убедитесь, что myFunction(e) находится в том же редакторе скриптов.

3
Mario 19 Янв 2021 в 22:57