Как получить значения формы в обработчике событий submit?
Я пытаюсь начать с очень простой формы Google, содержащей всего пару вопросов (множественный выбор с двумя вариантами и коротким текстом). После его создания я открыл редактор скриптов и набрал
function onSubmit(e) {
Logger.log("onSubmit(%s)", JSON.stringify(e));
}
и настройки onSubmit
в качестве обработчика триггера "отправить форму", используя" триггеры текущего проекта "из меню" Редактировать".
заполнение формы и отправка ее теперь приводит к вызову обработчика, но я вижу только это в журнале:
[17-04-15 18:56:23:584 CEST] onSubmit({"response":{},"source":{},"authMode":{},"triggerUid":1870249629})
т. е. поле ответа пустым. Я также пробовал использовать FormApp.getActiveForm().getResponses()
, но он также возвращает массив из нескольких пустых объектов (OTOH,FormApp.getActiveForm().getTitle()
возвращает название, которое я дал форме).
Я подозреваю, что мне нужно сделать скрипт некоторые дополнительные разрешения на доступ к данным формы, но я понятия не имею, как это сделать, и даже если это действительно проблема.
кто-нибудь знает, почему я не получаю значения форма и что я должен сделать, чтобы получить их? Заранее спасибо!
1 ответов
существует 2 шаблона для получения отправленных значений. Для обоих шаблонов функция извлечения значений из представления формы должна быть установлена в качестве триггера. Подробная информация об устанавливаемых триггерах -https://developers.google.com/apps-script/guides/triggers/installable.
1. Скрипт открывается на электронную таблицу.
в этом случае, установив триггер, вы можете получить отправленные значения своим скриптом. Деталь информация об объектах событий https://developers.google.com/apps-script/guides/triggers/events#form-submit.
сценарий :
function onSubmit(e){
Logger.log("%s", JSON.stringify(e));
}
результат :
{
"values": [
"date and time",
"test"
],
"namedValues": {
"fromtestform": [
"test"
],
"timeStamp": [
"date and time"
]
},
"range": {
"columnStart": 1,
"rowStart": 2,
"rowEnd": 2,
"columnEnd": 2
},
"source": {},
"authMode": {},
"triggerUid": #####
}
2. Скрипт открывается по форме.
в этом случае представленный значения могут быть получены с помощью следующего скрипта. Детали информация https://developers.google.com/apps-script/reference/forms/form-response.
сценарий :
function onSubmit(e){
Logger.log("authMode=%s, source.getId()=%s", e.authMode, e.source.getId());
var items = e.response.getItemResponses();
for (i in items){
Logger.log("getItem().getTitle()=%s, getResponse()=%s", items[i].getItem().getTitle(), items[i].getResponse());
}
}
результат :
authMode=FULL, source.getId()=### form ID ###
getItem().getTitle()=## item's title ##, getResponse()=test
если я неправильно понял ваш вопрос, Извините.