скрипт google получит текущий ответ onSubmit
есть ли способ узнать текущий ответ формы google (программно)? В функции onSubmit.
посмотрел документация но я должен предоставить respondId. Как я нашел respondId?
обрезанный код от них об этом:
// Open a form by ID and log the responses to each question.
var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i++) {
var formResponse = formResponses[i];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
Logger.log('Response #%s to the question "%s" was "%s"',
(i + 1).toString(),
itemResponse.getItem().getTitle(),
itemResponse.getResponse());
}
}
обновление:
function onSubmit(e) {
/* Get values entered by filling the form */
var itemResponses = e.response.getItemResponses();
var myWantedValue = itemResponses[COLUMN_NUMBER].getResponse();
}
Примечание: передавая параметр e (vent) в качестве параметра, можно получить доступ к значениям, отправив живую форму, а не редактор сценариев!
4 ответов
этот код дает вам значения для последнего ответа формы, это то, что вы ищете ?
function myFunction() {
var formResponses = FormApp.getActiveForm().getResponses();
Logger.log(formResponses.length);
var formResponse = formResponses[formResponses.length-1];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
Logger.log('Last response to the question "%s" was "%s"',
itemResponse.getItem().getTitle(),
itemResponse.getResponse());
}
}
@Serge я использовал ваш код для отображения ответов респондента, когда он отправляет форму с помощью формы.setConfirmationMessage() и форма.getConfirmationMessage (). я использовал форму onSubmit trigger. Однако он неизменно возвращает ответы предыдущего респондента. я попытался использовать e.ответ тоже, но снова я получаю ответы предыдущего респондента. Я также сделал Лесоруб.журнал(форма.getConfirmationMessage ()), чтобы проверить и найти, что это отображает ответы текущего опрашиваемый. Однако фактическая страница, которую респондент получает при отправке, является страницей предыдущего респондента. Есть зацепки?
Update: я отметил, что другие люди также опубликовали эту проблему: см. Это https://productforums.google.com/forum#!тема/документы / cygTFXtyy5I и этот http://code.google.com/p/google-apps-script-issues/issues/detail?can=2&start=0&num=100&q=&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner&groupby=&sort=&id=3507
кажется, мы не можем настроить сообщение для каждого пользователя. Я нашел это: https://code.google.com/p/google-apps-script-issues/issues/detail?can=2&start=0&num=100&q=&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner&groupby=&sort=&id=3507#makechanges
вы пытаетесь прочитать точный ответ, который вызвал выполнение onSubmit (), чтобы запустить другой процесс на определенных данных, таких как отправка подтверждения по электронной почте.
Если вышеизложенное верно:
вместо того, чтобы использовать форму в качестве источника данных для последующей обработки, попробуйте прочитать лист Google, хранящий ответы. Может показаться, что проблема одна и та же: чтение источника данных (самой формы или листа, хранящего данные) не указывает на точная запись, которая вызвала событие onSubmit ().
разница в том, что на листе вы можете создать столбец "reply_sent", чтобы отметить момент постобработки каждого ответа формы, например, отправив автоматический ответ на основе его содержимого.
затем, когда onSubmit () запускается, он проходит через все ответы и обрабатывает не только последний полученный, или тот, который вызвал функцию onSubmit (), но и любой другой ответ, который может иметь по какой-либо причине оставлен без ответа (поле"reply_sent" пустое). Последнее преимущество этого подхода заключается в том, что ваш скрипт регистрирует свое поведение, поскольку дата записывается вместе с каждым ответом, когда он запускает obSubmit().