2016-08-22 17 views
0

フォームを送信して、フォームの内容からDocテンプレートを更新できますか?私が似たようなことをしたことで見た唯一の方法は、スプレッドシートにフォームを送信し、スプレッドシート内のonFormsubmit関数を使用してテンプレートを更新することでした。フォームから文書テンプレートを直接更新する

フォームとコンテナにバインドされたスクリプトではこれはできませんか?

おかげで

答えて

0

私が最初に私の文書のいくつかの行を交換する作業にこれを得ていますテンプレートが、今何も何らかの理由で働いています。テンプレートのテキストをある時点で編集したので、ファイルIDが変更されるかどうかわかりません。コピーを作成しますが、replaceTextは機能しません。コードが添付されている:

`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

実行のトランスクリプトは状態:実行に失敗しました:TypeError:メソッド "getItemResponses"を呼び出すことができません未定義。 (行10、ファイル "コード") – Rockn

+0

トリガーを削除してもう一度追加すると、プロセスは正常に動作します。 – Rockn

0

はい、それは可能だが、それは簡単ではありません(基本的にテンプレートとしてドキュメントを使用して、そのための明白なツールはありません)

+0

フォームの内容を配列に読み込む方法が分かっていれば残りはケーキになります。 – Rockn

+0

@ Rocknyouここでそれを見つけるでしょう:https://developers.google.com/apps-script/guides/triggers/events#form-submit – Harold

関連する問題