2016-08-22 3 views
0

Ist es möglich, ein Formular zu senden und eine Dokumentvorlage aus dem Formularinhalt zu aktualisieren? Der einzige Weg, den ich gesehen habe, um etwas Ähnliches zu tun, war, das Formular an eine Tabelle zu senden und eine onFormsubmit-Funktion in der Tabelle zu haben, um die Vorlage zu aktualisieren.Dokumentvorlage direkt aus Formular aktualisieren

Ist dies nicht über Formulare und ein containergebundenes Skript möglich?

Dank

Antwort

0

Ich habe das ein paar Zeilen in meinem Dokument arbeiten zunächst bekommen ersetzen Vorlage, aber jetzt funktioniert nichts aus irgendeinem Grund. Ich habe den Text in der Vorlage an einem Punkt bearbeitet, so dass ich nicht sicher bin, ob das die Datei-ID ändert. Es erstellt die Kopie, aber der replaceText funktioniert nicht. Code angehängt:

`function onFormSubmit(e) { 

    var dt = Utilities.formatDate(new Date(), 'GMT', "MM/dd/yyyy") 
    var submitter = Session.getActiveUser().getEmail(); 
    var copyDoc = DriveApp.getFileById('1t5r8IxLgunJ17J2tXkHfw3LRfuXQeTlP5MZURC-23e0').makeCopy('tmpAddress').getId(); 
    var newDoc = DocumentApp.openById(copyDoc); 
    var body = newDoc.getBody(); 

    var itemResponse = e.response; 
    var name = itemResponse.getItemResponses()[0].getResponse(); 
    var email = itemResponse.getItemResponses()[1].getResponse(); 
    var pphone = itemResponse.getItemResponses()[2].getResponse(); 
    var paddress = itemResponse.getItemResponses()[3].getResponse(); 
    var palot = itemResponse.getItemResponses()[4].getResponse(); 
    var pcity = itemResponse.getItemResponses()[5].getResponse(); 
    var pstate = itemResponse.getItemResponses()[6].getResponse(); 
    var pzip = itemResponse.getItemResponses()[7].getResponse(); 
    var nphone = itemResponse.getItemResponses()[8].getResponse(); 
    var naddress = itemResponse.getItemResponses()[9].getResponse(); 
    var nalot = itemResponse.getItemResponses()[10].getResponse(); 
    var ncity = itemResponse.getItemResponses()[11].getResponse(); 
    var nstate = itemResponse.getItemResponses()[12].getResponse(); 
    var nzip = itemResponse.getItemResponses()[13].getResponse(); 

    body.replaceText('#{name}', name); 
    body.replaceText('#{email}', email); 
    body.replaceText('#{pphone}', pphone); 
    body.replaceText('#{paddress}', paddress); 
    body.replaceText('#{palot}', palot); 
    body.replaceText('#{pcity}', pcity); 
    body.replaceText('#{pstate}', pstate); 
    body.replaceText('#{pzip}', pzip); 
    body.replaceText('#{nphone}', nphone); 
    body.replaceText('#{naddress}', naddress); 
    body.replaceText('#{nalot}', nalot); 
    body.replaceText('#{ncity}', ncity); 
    body.replaceText('#{nstate}', nstate); 
    body.replaceText('#{nzip}', nzip); 
    body.replaceText('#{dt}', dt) 
    body.replaceText('#{submitter}',submitter) 
    newDoc.saveAndClose(); 

} 
` 
+0

Das Ausführungsprotokoll steht: Execution failed: TypeError: Kann die Methode "getItemResponses" von nicht aufrufen nicht definiert. (Zeile 10, Datei "Code") – Rockn

+0

Der Trigger wurde gelöscht und erneut hinzugefügt und der Prozess funktioniert ordnungsgemäß. – Rockn

0

ja, es ist möglich, aber es ist nicht einfach (im Wesentlichen doc als Vorlage verwendet, gibt es keine offensichtlich Werkzeuge dafür)

+0

Wenn ich herausfinden kann, wie die Formularinhalte in ein Array lesen Sie den Rest Kuchen wäre. – Rockn

+0

@ Rocknou wird das hier finden: https://developers.google.com/apps-script/guides/triggers/events#form-submit – Harold

Verwandte Themen