Как динамически создавать устанавливаемые триггеры как другие пользователи в Google Apps Script? - PullRequest
0 голосов
/ 22 апреля 2020

Итак, у меня есть скрипт, привязанный к форме Google, который создает устанавливаемый триггер при каждой отправке формы. Теперь я поделился и формой, и сценарием с реальными пользователями. В какой-то момент я заметил, что новые триггеры не создаются, потому что предел квоты уже достигнут. Просматривая список установленных триггеров, я заметил, что все они установлены как «Я». Как мне сделать так, чтобы другие пользователи, которые фактически отправили форму (и создали в процессе устанавливаемый триггер), были определены как «Владелец» триггера, а не я.

1 Ответ

1 голос
/ 22 апреля 2020

Если ваш код выглядит примерно так:

function createOnFormSubmitTrigger() {
  var form = FormApp.openById('[FORM-ID]');
  ScriptApp.newTrigger('createTrigger')
  .forForm(form)
  .onFormSubmit()
  .create();
}

function createTrigger() {
  ScriptApp.newTrigger("myFunction2")
  .timeBased()
  .everyMinutes(10)
  .create();
}

function myFunction2 () {
  console.log('test')
}

И именно вы используете функцию createOnFormSubmitTrigger и предоставляете разрешения, для вашей учетной записи будет создан триггер (установлен как "я"). «). Вам нужно будет попросить каждого пользователя запускать функцию createOnFormSubmitTrigger самостоятельно, чтобы предоставить разрешения и установить триггер под своей учетной записью. Что в этом случае не имеет большого смысла, поскольку каждый пользовательский триггер будет запускаться каждый раз, когда отправляется форма независимо от того, кто ее отправил.

Как указано в документации для устанавливаемых триггеров :

Устанавливаемые триггеры всегда запускаются под учетной записью человека, который их создал. Например, если вы создаете устанавливаемый триггер открытия, он запускается, когда ваш коллега открывает документ (если у вашего коллеги есть права на редактирование), но он запускается как ваша учетная запись. Это означает, что если вы создаете триггер для отправки электронного письма при открытии документа, электронное письмо всегда отправляется из вашей учетной записи, а не обязательно из учетной записи, которая открыла документ. Тем не менее, вы можете создать устанавливаемый триггер для каждой учетной записи, что приведет к одному электронному письму, отправленному с каждой учетной записи.

РЕДАКТИРОВАТЬ

Вы можете попробовать обходной путь для вашего сценария использования, используя метод getActiveUser , который возвращает пользователя-владельца триггера и сравнивает его с пользователем, отправившим форму, который можно получить с помощью метода getRespondentEmail , используя оператор if для сравнения обоих электронные письма пользователя и запустить нужный вам код в зависимости от этого. Таким образом, триггеры будут запускаться каждый раз, но необходимый код будет выполняться только тогда, когда владелец триггера совпадает с респондентом формы.

...