#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()
помощью andSession.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. Эти настройки формы уже включены.