Получение адреса электронной почты респондента, который изменяет ответ формы Google

#google-apps-script #google-sheets #google-forms

#google-apps-script #google-таблицы #google-forms

Вопрос:

Я создаю форму Google, используя рабочую учетную запись, и делаю ее «Ограничить [domain.com ] пользователи». Теперь я могу получить адрес электронной почты человека, который первым отправил ответ. И тогда возникает мой вопрос: возможно ли получить адрес электронной почты кого-либо еще, кто изменил предыдущий ответ?

Например, такая ситуация: человек А заполняет форму и делится ссылкой на редактирование со своим товарищем по команде человеком B, затем человек B обновляет ответ в этой предыдущей форме. Интересно, есть ли какое-либо решение для получения электронной почты человека B (без запроса их адреса электронной почты в форме).

Я пытался использовать getRespondentEmail(), однако он не работает. Он всегда возвращает адрес электронной почты человека A.

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

1. Вы пробовали использовать триггер «При отправке формы» с Session.getActiveUser() помощью?

2. @SandyGood Да. Я также попытался использовать триггер «При отправке формы» с Session.getActiveUser().getEmail() помощью and Session.getEffectiveUser().getEmail() . Оба они вернут ту же учетную запись, что и я, владелец этой формы / скрипта.

3. Звучит так, как будто вы запускаете скрипт от своего имени, а не от имени пользователя. Он развернут / опубликован? Если да, вы настроили его на запуск от своего имени или от имени пользователя?

4. @Karl_S Он не развернут / опубликован. Когда срабатывает триггер отправки формы, скрипт передает функции объект события. Я вижу поле Username в e got nothing, если пользователь, который редактировал ответ. @_@

5. Насколько я понимаю, если человеку, выполняющему скрипт, не будет предложено авторизовать скрипт, оба ‘Session.getActiveUser ().getEmail ()’ и ‘Session.getEffectiveUser ().getEmail ()’ запускаются как лицо, создавшее триггер, а не лицо, запустившее скрипт. Пользователи не могут авторизовать скрипты на некоторых триггерах, например, при редактировании и, я полагаю, при отправке формы.

Ответ №1:

Пожалуйста, попробуйте использовать getEditResponseUrl() метод.

Этот метод, как указано в документации,

Генерирует URL-адрес, который можно использовать для редактирования уже отправленного ответа, даже если этот Form.setAllowResponseEdits(enabled) параметр отключен. Любой, кто переходит по ссылке, может отредактировать ответ, хотя ему нужна учетная запись с доступом к форме, если Form.setRequireLogin(requireLogin) параметр включен. Если Form.setCollectEmail(collect) параметр включен, форма записывает адрес электронной почты пользователя, который отредактировал ответ, вместо адреса электронной почты исходного респондента.

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

1. Это не работает.. Обнаружено, что URL-адрес из getEditResponseUrl() метода точно такой же, как генерирует форма Google. P.S. Эти настройки формы уже включены.