Как с помощью Google Apps Script получить значение, введенное пользователем для поля Другое в Google Forms? - PullRequest
0 голосов
/ 13 января 2019

У меня есть форма Google, представляющая собой простой список флажков с опцией «Другое». Как автор формы это выглядит так:

enter image description here

Когда я заполняю форму, я могу установить флажок «Другое», ввести значение и отправить.

enter image description here

но когда запускается мой скрипт Служб Google,

  var choices = checkboxItem.getChoices();
  Logger.log("Choices array length: %s", choices.length);

  var results = [];
  for (var i = 0; i < choices.length; ++i) {
    results.push(choices[i].getValue());
  }

  Logger.log("getFormChoicesAsStrings %s", JSON.stringify(results));

он не видит, что я набрал для значения «Другое» (в этом примере: «Стив Джобс»), о чем свидетельствует вывод журнала:

[19-01-12 20:31:59:164 PST] Logger.log([Choices array length: %s, [1.0]]) [0 seconds]
[19-01-12 20:31:59:165 PST] Logger.log([getFormChoicesAsStrings %s, [["John Doe"]]]) [0 seconds]

API для CheckboxItem допускает значение true / false независимо от того, отображается или нет опция Other , а API для выбора не предлагает ничего вокруг опции Other.

Какой вызов API можно сделать, чтобы прочитать значение параметра Other?

1 Ответ

0 голосов
/ 13 января 2019
  • Пользователи устанавливают флажок, устанавливают значения в «Другое» и нажимают кнопку «Отправить».
  • В приведенной выше ситуации вы хотите получить значения ответов, включая значения в разделе «Другое».

Если мое понимание верно, как насчет этой модификации?

Точка модификации:

  • В вашем скрипте, хотя я не вижу весь скрипт, я думал, что элементы из формы извлекаются. Это не значения ответа.

Модифицированный скрипт:

Скопируйте и вставьте следующий скрипт и установите триггер для myFunction().

// FormApp.getActiveForm() // This is used for adding a scope of https://www.googleapis.com/auth/forms
function myFunction(obj) {
  var r = obj.response.getItemResponses();
  r.forEach(function(e) {
    var r1 = e.getItem().getTitle();
    var r2 = e.getResponse();
    Logger.log(r1); // "Who attended?"
    Logger.log(r2); // ["John Doe","Steve Jobs"]
  });
}

Примечание:

  • При использовании этого сценария установите myFunction() в качестве устанавливаемых триггеров.
    • «Выберите, какую функцию запускать» - это «myFunction».
    • «Выбрать источник события» - «Из формы».
    • «Выбрать тип события» - «На вершине формы».

Ссылки:

Если я неправильно понял ваш вопрос, пожалуйста, скажите мне. Я хотел бы изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...