Неправильный источник и ответ в форме триггеров - PullRequest
0 голосов
/ 29 августа 2018

Я установил простой рабочий процесс с помощью скрипта Google Apps. Я создал сценарий проекта из формы А.

Вот рабочий процесс:

  1. пользователи отправляют ответ на форму A
  2. скрипт создает новый ответ для формы B, отправляет его и отправляет мне ссылку на издание по электронной почте
  3. Я отправляю ответ для формы B созданного для меня сценария
  4. скрипт отправляет мне резюме обеих форм по электронной почте

Для этого я программно настроил триггер на форме B:

function addOnNewFormBSubmitTrigger() {
  ScriptApp.newTrigger('onNewFormBSubmit')
    .forForm(FORM_B_ID)
    .onFormSubmit()
    .create();
}

Функция onNewFormBSubmit выглядит так:

function onNewFormBSubmit(formSubmitEvent) {
  _sendAnalysisEmail(formSubmitEvent.source, formSubmitEvent.response);
}

Функция запущена, но значение formSubmitEvent.source представляет собой форму A, а formSubmitEvent.response - это последний ответ для этой формы. Я ожидаю, что источником будет форма B, так как я прикрепил к нему триггер.

EDIT:

Даже передача экземпляра формы вместо ее идентификатора не работает, как я ожидаю

function addOnNewAlaysisSubmitTrigger() {
  var form = FormApp.openById(FORM_B_ID);
  ScriptApp.newTrigger('onNewFormBSubmit')
    .forForm(form)
    .onFormSubmit()
    .create();
}

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Спасибо @tehhowch, ссылка, которую вы дали мне в комментариях, заставила меня подумать, что это может сработать, если скрипт не создан из формы. Таким образом, я создал POC, создавая скрипт из таблицы, и он работает.

Это скрипт, который я сделал: Скрипт Google Apps

И это журналы, сгенерированные двумя функциями: журналы вызовов функций из Stackdriver

Как видите, я получил два разных ответа от двух форм. Теперь проблема в том, что это событие не является событием формы отправки, как определено в документации: https://developers.google.com/apps-script/guides/triggers/events#form-submit_4, но это другая история.

Если вы хотите попробовать, вот:

0 голосов
/ 29 августа 2018

Вы пытались использовать форму в качестве параметра вместо просто его идентификатора.

Примерно так:

var form = FormApp.openById('FORM_B_ID');
ScriptApp.newTrigger('onNewFormBSubmit')
    .forForm(form)
    .onFormSubmit()
    .create();
...