Динамическое заполнение полей формы на основе других ответов перед отправкой

#google-apps-script #google-sites #google-forms

#google-apps-script #google-сайты #google-forms

Вопрос:

У меня есть форма, которую я хочу динамически изменять, я прочитал документы, но, похоже, не могу найти какого-либо окончательного ответа. Могу ли я заставить мою форму удалять варианты из выпадающих списков, потому что они использовали переключатель # 2 для 3-го вопроса? Могу ли я отформатировать текст из вопроса 1 и использовать его для предварительного заполнения вопроса 6 тем же ответом (по умолчанию он должен быть изменяемым)?

В принципе, мне нужно использовать код, чтобы определить, был ли адрес написан короткими формами (st, rd, cres, ct), а также удлинить и заглавными буквами их (улица, дорога). Я даже не знаю, возможно ли это. Если это возможно, кто-нибудь может предоставить пример кода или указать мне нужные справочные документы, это было бы оценено. Если нет, то выполнимо ли это на веб-сервере, если некоторые из моих вариантов множественного выбора необходимо считывать из электронной таблицы Google? Могу ли я сделать это через сайты Google?

Ответ №1:

Вы смотрели на Form класс сервисов Google Apps?

Формы класса

В нем говорится:

Формы могут быть доступны или созданы из FormApp.

Например, вы можете использовать:

 addTextItem()
  

или:

 createChoice(value)
  

Документация Google

  // Open a form by ID and add a new multiple choice item.
 var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
 var item = form.addMultipleChoiceItem();
 item.setTitle('Do you prefer cats or dogs?')
     .setChoices([
         item.createChoice('Cats'),
         item.createChoice('Dogs')
      ])
     .showOtherOption(true);
  

Вы не хотите открывать новую форму, а используете открытую в данный момент.

 /**
 * Adds a custom menu to the active form, containing a single menu item for
 * invoking checkResponses() specified below.
 */
function onOpen() {
  FormApp.getUi()
      .createMenu('My Menu')
      .addItem('Check responses', 'checkResponses')
      .addToUi();
}
  

Проверить текущие ответы?

 /**
 * Gets the list of responses and checks the average rating from the form
 * created in createForm() above.
 */
function checkResponses() {
  var form = FormApp.getActiveForm();
  var responses = form.getResponses();
  var score = 0;
  for (var i = 0; i < responses.length; i  ) {
    var itemResponses = responses[i].getItemResponses();
    for (var j = 0; j < itemResponses.length; j  ) {
      var itemResponse = itemResponses[j];
      if (itemResponse.getItem().getType() == FormApp.ItemType.SCALE) {
        score  = itemResponse.getResponse();
      }
    }
    var average = score / responses.length;
    FormApp.getUi().alert('The score is '   average);
  }
}
  

Ответ №2:

Вы могли бы использовать HTML-сервис Apps Script; написать HTML для создания пользовательской формы; написать код JavaScript для выполнения того, что вы хотите; затем добавить скрипт Apps на сайт Google. Или просто запустите HTML-сервис Apps Script как собственный веб-сайт. Но для этого параметра требуется, чтобы вы могли писать HTML и JavaScript. То, что вы хотите сделать, возможно.

Что касается создания пользовательской формы, проверки введенных пользователем данных и их изменения, это можно сделать в HTML-сервисе Apps Script. Затем вам нужно где-то сохранить данные. Google Forms создан для того, чтобы быть удобным для людей, которые не разбираются в программировании.

Похоже, вы просто ищете общую информацию о том, что возможно и что невозможно с различными продуктами, чтобы вы могли сделать выбор.

Чтобы ознакомиться с сервисом HTML, перейдите по следующей ссылке в качестве отправной точки:

HTML-сервис документации Google

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

1. У меня есть опыт работы с HTML, js и CSS, я действительно надеялся на ответ, например, вы могли бы использовать getLiveResponses (e); и создать новый вопрос или что-то в этом роде… похоже, мне придется сделать это сложным способом: ( Хотя спасибо за помощь.