URL anzeigen, die zum Bearbeiten von Antworten aus einem Google-Formular in einer Google-Tabelle mithilfe eines Skripts verwendet wird


11

Ich versuche, die Bearbeitungs-URL für ein Google-Formular automatisch in die Antwort von Google Sheet einzufügen, an die es angehängt ist. Ich habe das bereits gesehen und möchte es verwenden, aber ich habe Probleme, herauszufinden, wo genau das Skript abgelegt werden soll.

Ich habe versucht, es in den Skript-Editor in der Google-Tabelle einzufügen, in dem die URL angezeigt werden soll, bin mir aber nicht sicher, wohin ich von dort aus gehen soll. Im Skripteditor habe ich versucht, es als Add-On zu testen, aber das hat nicht funktioniert.

Ich habe wenig Erfahrung mit Skripten und dem Skripteditor in Google Sheets. Abschließend verwende ich ein weiteres Add-On namens AutoCrat in derselben Google-Tabelle.


Neben dem Link zur Quelle des Codes, den Sie ausprobiert haben, sollten Sie den Code und die Schritte zur Durchführung Ihrer Tests gut einfügen.
Rubén

Antworten:


16

Kurze Antwort

Der Link verweist auf eine Frage und Antwort, die zwei Antworten enthält, aber keine davon scheint mir angemessen zu sein. IE der Code einer der Antworten ist unvollständig und beide senden E-Mails, so dass die Annahme zu komplex ist, um als Ausgangspunkt verwendet zu werden.

Unten finden Sie ein Skript, das einfacher zu übernehmen ist.

Anleitung

  1. Erstellen Sie ein Testformular und notieren Sie die Formular-ID (zwischen ../d/und /editin der URL). Neue Form

  2. Legen Sie das Formular fest, um Antworten an eine neue Tabelle zu senden. Verbinden Sie eine Tabelle

  3. Sie werden zur neuen Tabelle weitergeleitet. Notieren Sie sich den Namen des aktiven Blattes (benennen Sie ihn um, wenn Sie möchten) und fügen Sie der Spalte eine Überschrift hinzu, in der die URLs für die Antwortbearbeitung gespeichert werden sollen Edit Url. HINWEIS: Die Großschreibung ist sehr wichtig. Seien Sie also sehr vorsichtig, wie Sie sie schreiben. Antworttabelle

  4. Gehen Sie zu Tools > Script editor, um ein Google Apps Script-Projekt hinzuzufügen, das an die Tabelle gebunden ist. Tabellenkalkulationsskripte

  5. Ersetzen Sie den Standardcode durch den folgenden Code (denken Sie daran, die globalen Variablen entsprechend Ihrem Fall zu bearbeiten). Skriptcode

  6. Speichern Sie das Projekt und fügen Sie dann einen installierbaren Formulargipfel-Trigger hinzu (wenn Sie das Dialogfeld "Autorisierung erforderlich" erhalten, klicken Sie auf "Berechtigungen überprüfen" und dann auf "Zulassen"). Formular senden Trigger

  7. Senden Sie einige Beispielantworten, um die Lösung zu testen.

Code

/*
 * 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);
    }
  }
}

Zusätzliche Ressourcen

Ich habe einen Kern mit dem Inhalt aus der Frage und Antwort erstellt. In diesem B / C erkunde ich Möglichkeiten für eine bessere Zusammenarbeit zwischen Endbenutzern, die Code schreiben.


1
Ich habe es bekommen, es war der Blattname, und ich habe '/ viewform' am Ende der URL herausgenommen. Vielen Dank!
Nicks

1
@ Rubén - Ich habe mir erlaubt, Ihrem großartigen Tutorial ein wenig mehr Details hinzuzufügen, da ich mit einigen Schritten zu kämpfen hatte, als ich es selbst befolgte.
Sphinxxx

1
Okay. Der Hauptgrund, warum ich den Code geändert habe, war zu zeigen, dass Sie FormApp.openById()nur die Formular-ID anstelle FormApp.openByUrl()der gesamten URL verwenden können, falls sich das URL-Format von Google in Zukunft ändert. Ich werde stattdessen einen Kommentar zu Ihrem Kern hinterlassen.
Sphinxxx

3
In meinem Google Script-Fenster befanden sich die "Auslöser des aktuellen Projekts" unter "Bearbeiten".
dvb

1
@HoangTrinh Siehe canEditResponse ()
Rubén
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.