Показать URL-адрес, используемый для редактирования ответов из формы Google в таблице Google с помощью сценария

11

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

Я пытался поместить его в редактор сценариев в таблице Google, в котором я хотел бы, чтобы URL отображался, но я не уверен, куда идти дальше. В редакторе сценариев я пытался протестировать его как дополнение, но это не сработало.

У меня мало опыта со скриптами и редактором скриптов в Google Sheets. В завершение я использую еще одно дополнение под названием AutoCrat в той же таблице Google.

ники
источник
Помимо ссылки на источник кода, который вы попробовали, было бы неплохо включить код и шаги, необходимые для выполнения ваших тестов.
Рубен

Ответы:

16

Короткий ответ

В ссылке указывает на Q & A , который имеет два ответа , но не из них смотрит на меня , чтобы быть наши правила. То есть код одного из ответов неполон, и оба они отправляют электронные письма, поэтому принятие слишком сложно для использования в качестве отправной точки.

Ниже приведен скрипт, который легче принять.

инструкции

  1. Создайте тестовую форму и запишите идентификатор формы (между ../d/и /editв URL). Новая форма

  2. Установите форму для отправки ответов в новую электронную таблицу. Подключите электронную таблицу

  3. Вы будете перенаправлены на новую электронную таблицу. Обратите внимание на активное имя листа (переименовать его , если вы хотите) и добавить заголовок в столбец будет использоваться для хранения редактирования URL - ответа, то есть Edit Url. ПРИМЕЧАНИЕ: использование заглавных букв очень важно, поэтому будьте очень осторожны при написании. Таблица ответов

  4. Перейдите, чтобы Tools > Script editorдобавить проект Google Apps Script, ограниченный таблицей. Скрипты электронных таблиц

  5. Замените код по умолчанию на код ниже (не забывайте редактировать глобальные переменные в соответствии с вашим случаем). Код сценария

  6. Сохраните проект, а затем добавьте устанавливаемый триггер саммита формы (если появляется диалоговое окно «Требуется авторизация», нажмите «Просмотр разрешений», а затем «Разрешить»). Форма отправки триггера

  7. Отправьте несколько примеров ответов, чтобы проверить решение.

Код

/*
 * Global Variables
 */

// Form URL
var formURL = 'https://docs.google.com/forms/d/form-id/viewform';
// Sheet name used as destination of the form responses
var sheetName = 'Form Responses 1';
/*
 * Name of the column to be used to hold the response edit URLs 
 * It should match exactly the header of the related column, 
 * otherwise it will do nothing.
 */
var columnName = 'Edit Url' ;
// Responses starting row
var startRow = 2;

function getEditResponseUrls(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
  var columnIndex = headers[0].indexOf(columnName);
  var data = sheet.getDataRange().getValues();
  var form = FormApp.openByUrl(formURL);
  for(var i = startRow-1; i < data.length; i++) {
    if(data[i][0] != '' && data[i][columnIndex] == '') {
      var timestamp = data[i][0];
      var formSubmitted = form.getResponses(timestamp);
      if(formSubmitted.length < 1) continue;
      var editResponseUrl = formSubmitted[0].getEditResponseUrl();
      sheet.getRange(i+1, columnIndex+1).setValue(editResponseUrl);
    }
  }
}

Дополнительные ресурсы

Я создал суть с содержанием из вопроса и ответа. В этом б / к я изучаю способы лучшего сотрудничества между конечными пользователями, которые пишут код.

Рубена
источник
1
Я понял, это было имя листа, и я удалил «/ viewform» в конце URL. Спасибо!
Ник
1
@ Rubén - я позволил себе добавить немного больше деталей в ваш великолепный урок, так как я пытался выполнить несколько шагов, когда сам следовал ему.
Sphinxxx
1
Хорошо. Основная причина, по которой я изменил код, заключалась в том, чтобы показать, что вы можете использовать FormApp.openById()только идентификатор формы, а не FormApp.openByUrl()весь URL, в случае, если формат URL Google изменится в будущем. Я оставлю комментарий к вашей сути.
Sphinxxx
3
В моем окне скрипта Google «Триггеры текущего проекта» находились в разделе «Редактировать».
DVB
1
@HoangTrinh См. CanEditResponse ()
Рубен