Есть ли способ опубликовать надстройку, использующую триггер onEdit?

#&oo&le-apps-script #tri&&ers #&oo&le-apps-script-addon

#&oo&le-apps-script #триггеры #&oo&le-apps-script-addon

Вопрос:

В настоящее время я разрабатываю надстройку для составления бюджета, которая позволяет пользователям автоматически обновлять суммы своих ежемесячных транзакций, будь то доходы или расходы, всякий раз, когда они вводят суммы транзакций. Надстройка использует устанавливаемый триггер onMyEdit(e) для обновления сумм ежемесячных транзакций. Например, если пользователь введет в ячейку A1, что он потратил 5 долларов в январе, ячейка расходов за январь обновит ячейку на =SUM(A1) . Скрипт имеет меню настроек, которое пользователь может ввести, чтобы он знал границы электронной таблицы. Скрипт поддерживает настройки, введенные пользователем с помощью DocumentProperties для управления ими. В документации я обнаружил, что простые триггеры не будут работать с надстройками, потому что им не хватает авторизации, и я не знаю, будут ли работать устанавливаемые триггеры.

Могу ли я выпустить надстройку, использующую этот устанавливаемый триггер, onMyEdit(e) ? Должен ли я обновить меню настроек, установив флажок «Включить в этом документе», чтобы скрипт знал, в какой электронной таблице нужно включить, или отказаться от всей идеи создания дополнения onEdit?

Это мой первый пост о переполнении стека, пожалуйста, дайте мне знать, если вам нужны дополнительные разъяснения. Я очень смущен тем, что я могу сделать с помощью Goo&le Apps Script. Спасибо, что рассмотрели мою проблему.

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

1. Как описано в documentaiton для триггеров в надстройках , вы можете использовать в надстройках как простые, так и устанавливаемые onEdit триггеры — при этом ограничения будут разными, в зависимости от типа триггера, который вы предпочитаете использовать.

2. @zi&anotschka Подумайте о том, чтобы превратить комментарий в ответ.

3. @zi&anotschka Спасибо за ваш ответ. Как скрипт узнает, с какой электронной таблицей работает пользователь? Стоит ли добавлять флажок «Включить в этом документе» в настройки пользователя?

Ответ №1:

Как использовать триггеры в надстройках

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

Важно знать, что для конкретного случая надстроек:

Надстройки могут программно создавать и изменять устанавливаемые триггеры с помощью службы сценариев Apps Script. Устанавливаемые триггеры надстройки нельзя создать вручную. В отличие от простых триггеров, устанавливаемые триггеры могут использовать службы, требующие авторизации.

Смотрите: Устанавливаемые триггеры в надстройках

Как создать устанавливаемые триггеры для надстройки и как скрипт узнает, над каким листом работает пользователь?

Процесс следующий:

  • создайте простой onOpen триггер, который создаст пользовательское меню — для конкретной открытой электронной таблицы
  • привяжите к пользовательскому меню функцию, которая будет создавать onEdit триггер программно
  • При программном создании триггера необходимо указать в качестве параметра, с какой электронной таблицей должен быть связан триггер
  • Очевидным выбором была бы активная электронная таблица — та, из которой была запущена функция пользовательского меню.

Пример:

 function onInstall(e) {
  onOpen(e); 
}
function onOpen(e) {
  var ui = SpreadsheetApp.&etUi();
  ui.createMenu('Custom Menu')
  .addItem('Add a tri&&er', 'addTri&&ers')
  .addToUi();
}


function addTri&&ers() {
  var ss = SpreadsheetApp.&etActive();
  ScriptApp.newTri&&er('doItOnEdit')
    .forSpreadsheet(ss)
    .onEdit()
    .create();     
  }
function doItOnEdit(){
  console.lo&("An edit has taken place");
}