[Google-Apps-Script] Wie füge ich den Link "Antwort bearbeiten" zu Google Forms-E-Mails hinzu?


Answers

Wenn Sie Google Apps verwenden, können Ihre Responder dort Formularantworten bearbeiten.

Siehe: Bearbeiten von Formularantworten

Question

Ich habe ein einfaches Google-Formular, das Daten sammelt und mithilfe von AppScript Bestätigungs-E-Mails an Benutzer sendet, die es ausfüllen. Nachdem der Benutzer das Formular abgeschickt hat, sieht er bei der Bestätigung einen Link, um seine Antwort zu bearbeiten.

Ich möchte diesen Link als Teil der Bestätigungs-E-Mail einfügen (momentan wird er nur auf der Seite angezeigt.) Wie kann ich die URL zum Bearbeiten einer übermittelten Antwort abrufen?

Ich bin in der Lage, den Link zum Formular durch SpreadsheetApp.getActiveSpreadsheet().getFormUrl() . Es gibt mir das folgende Format: https://docs.google.com/a/domain.com/spreadsheet/viewform?formkey=<formKey>

Der Link enthält jedoch nicht den Bearbeitungsschlüssel, der für Benutzer erforderlich ist, um seine Antwort zu bearbeiten. Die erwartete URL sollte wie https://docs.google.com/a/domain.com/spreadsheet/viewform?formkey=<formKey>&edit=<editKey> aussehen: https://docs.google.com/a/domain.com/spreadsheet/viewform?formkey=<formKey>&edit=<editKey>

Danke für die Hilfe im Voraus!

-K

Bearbeitet:

Es wurde eine Feature-Anfrage zu diesem Thema hinzugefügt: http://code.google.com/p/google-apps-script-issues/issues/detail?id=1345&thanks=1345&ts=1337773007




Großartig, Skript funktioniert! Vielen Dank.

Für Neulinge, wie mich: SendConfirmationMail(e) Sie einfach den andre-Code für die Funktion SendConfirmationMail(e) in den Code-Editor Ihrer Tabelle ein und setzen Sie 'on SendConfirmationMail(e) ', um ihn auszuführen. Das ist im Tabellenskript-Editor, nicht im Formular-Editor.

Sie müssen einige Werte hacken. Lesen Sie den Code. Für mich war die verwirrende die Notwendigkeit, die ********COLUMN SEQUENCE EX 14****** mit der ********COLUMN SEQUENCE EX 14****** zu ersetzen, wo die Edit-URLs enden sollen. Ich habe 39 verwendet, was eine Spalte mehr ist, als mein Formular aufgebraucht hat.

Allerdings habe ich Laufzeitprobs in diesem Teil:

for (var i in headers) {

            value = e.namedValues[headers[i]].toString();

            // Do not send the timestamp and blank fields            
            if ((i !== "0") && (value !== "")) {
                message += headers[i] + ' :: ' + value + "<br>";
            }
        }

Weiß nicht warum, aber ich habe es mit folgendem ersetzt:

 for (var keys in columns) {
        var key = columns[keys];
        if ( e.namedValues[key]) {
        message += key + ' :: '+ e.namedValues[key] + "<br>"; 
        } 
    }

Funktioniert bei mir.







Sie können versuchen, ein Formular mit den Werten aus dieser E-Mail-Adresse zu füllen, anstatt vorherige Antworten zu löschen.

es ist kein schöner Weg, aber es kann funktionieren ...




Links