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


11

Я намагаюся зробити так, щоб URL-адреса для редагування форми Google автоматично заповнювалася у відповідь Таблиця Google, до якої вона додається. Я вже бачив це і хочу ним скористатися, але у мене виникають проблеми, намагаючись зрозуміти, куди саме поставити сценарій.

Я спробував помістити його в редактор сценаріїв в електронній таблиці Google, щоб хотілося, щоб URL-адреса з’явилася, але я не впевнений, куди звернутися звідти. У редакторі сценаріїв я намагався протестувати його як доповнення, але це не закінчилось.

У мене мало досвіду роботи зі сценаріями та редактором сценаріїв у Google Таблицях. На завершення я використовую ще одне доповнення під назвою AutoCrat в тій же електронній таблиці Google.


Окрім посилання на джерело коду, який ви добре спробували, включіть код та кроки, які слід виконати для тестування.
Рубен

Відповіді:


16

Коротка відповідь

У засланні вказує на Q & A , який має дві відповіді , але не з них дивиться на мене , щоб бути наші правила. IE код одного з відповідей є неповним, і обидва вони надсилають електронні листи, тому прийняття є занадто складним, щоб використовувати його як вихідний пункт.

Нижче представлений сценарій, який легше прийняти.

Інструкції

  1. Створіть тестову форму та зазначте ідентифікатор форми (між ../d/і /editв URL-адресі). Нова форма

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

  3. Ви будете перенаправлені на нову електронну таблицю. Відзначте ім'я активного аркуша (перейменуйте його, якщо хочете) та додайте заголовок до стовпця, який буде використовуватися для зберігання URL-адрес редагування відповідей, тобто Edit Url. ПРИМІТКА: Капіталізація дуже важлива, тому будьте дуже уважні, як це написати. Електронна таблиця відповідей

  4. Перейдіть, щоб Tools > Script editorдодати проект сценарію Google Apps, обмежений до електронної таблиці. Сценарії електронних таблиць

  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 - Я взяв на себе сміливість додати трохи більше деталей у ваш чудовий підручник, коли я боровся з декількома кроками, коли сам дотримувався цього.
Сфінкс

1
Добре. Основна причина, за якою я змінив код, полягала в тому, щоб показати, що ви можете використовувати FormApp.openById()лише ідентифікатор форми замість FormApp.openByUrl()цілої URL-адреси, на випадок, якщо формат URL-адреси Google в майбутньому зміниться. Я замість цього залишу коментар до вашої суті.
Sphinxxx

3
У вікні мого скрипту google під заголовком "Редагувати" було "Поточні активатори проекту".
dvb

1
@HoangTrinh Переглянути canEditResponse ()
Rubén
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.