Как создать URL-адрес предварительно заполненной формы для формы Google

Я ищу программный способ автоматизации генерации предварительно заполненных URL-адресов для форм Google.

В недавнем обновлении Google представил новый продукт Forms для Документов Google. Если вы откроете меню инструментов в электронной таблице, вы увидите некоторые новые параметры.

Меню инструментов с устаревшей формой

В новом меню "Отклики формы" можно выбрать "Получить предварительно заполненный URL". Откроется диалоговое окно, содержащее версию вашей формы, которую вы можете заполнить, и когда вы submit Таким образом, вы получите URL-адрес, который можно использовать для открытия интерактивной формы с данными, которые вы предварительно заполнили, готовы и ждут вас. URL выглядит примерно так...

https://docs.google.com/forms/d/--Form-ID--/viewform?entry.1094330118=Something&entry.1471717973=stack@example.com&entry.540962741&entry.787941281&entry.1873343651

Вопросы из формы имеют фиксированную идентичность, например entry.1094330118, Они могут быть предварительно заполнены значением (entry.1094330118=Something) или пустым (entry.7879412).

В приложении-скрипте я хотел бы создать эти предварительно заполненные URL-адреса для пользователей моей формы, чтобы я мог предоставлять их для обновлений. Мои пользователи не являются членами домена приложений, поэтому у меня нет возможности встроить ссылку Изменить свой ответ.

Если я смогу получить информацию о форме, я смогу собрать воедино URL. Хотя я могу пройти через пользовательский интерфейс, чтобы создать один URL, и проанализировать его, чтобы получить информацию для этой формы, мне нужно решение, которое будет работать с произвольными формами.

  1. Как программно определить идентификаторы вопросов?
  2. Доступен ли мне новый продукт Forms через API-интерфейсы скриптов приложений? (Я знаю о getFormURL() - это не то, что я имею в виду.)
  3. Могу ли я получить больше информации по этому вопросу, имея в своем распоряжении идентификационный номер вопроса? (Текст вопроса, тип и т. Д.)

4 ответа

Решение

Мне нужно что-то подобное, чтобы пользователи могли редактировать свои ответы, посмотрите здесь: http://productforums.google.com/forum/

Скопируйте / вставьте код ниже:

function assignEditUrls() {
var form = FormApp.openById('1MonO-uooYhARHsr0xxxxxxxxxxxxxxxxxxxxx');
//enter form ID here

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');

    //Change the sheet name as appropriate
  var data = sheet.getDataRange().getValues();
  var urlCol = 4; // column number where URL's should be populated; A = 1, B = 2 etc
  var responses = form.getResponses();
  var timestamps = [], urls = [], resultUrls = [];

  for (var i = 0; i < responses.length; i++) {
    timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
    urls.push(responses[i].getEditResponseUrl());
  }
  for (var j = 1; j < data.length; j++) {

    resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
  }
  sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);  
}

Сейчас это невозможно, но этот запрос отслеживается здесь. Пожалуйста, добавьте свои варианты использования там и следите за обновлениями.

Я не нашел способа создать предварительно заполненный URL-адрес из самого идентификатора формы. Возможно, если в форме уже есть ответ:

  var form = FormApp.openById('1nGvvEzQHN1n-----_your_for_id_----zemoiYQA');
  var responses = form.getResponses();
  Logger.log(responses[0].toPrefilledUrl());

ссылаясь на этот ответ, его можно использовать для создания предварительно заполненных URL-адресов, заменив последнюю строку следующим образом: вместо FormResponse.submit();это будет FormResponse.toPrefilledUrl();

Другие вопросы по тегам