2016-03-23 10 views
0

私は他の同様の投稿を見て、トリガーを正しく設定するのに助けを得ましたが、まだエラーがあります。
私は、Google Appsのフォーム送信に対応して電子メールを送信するためのpdfドキュメントの送信を自動化しようとしました。私はWeb上で共有されたスクリプトを使用して、いくつかの非推奨の用語を修正しました。
プレースホルダとしてkeyItemsが埋め込まれたドキュメントテンプレートを作成しました。データを取得するためのフォームを作成しました。フォームに関連付けられているスプレッドシートは、計画どおりにデータをキャプチャしています。スプレッドシートに関連するスクリプトを編集して、フォームの提出に必要な作業をうまくやるようにしました。トリガーは、on form submitfrom the spreadsheetに正しく設定されています。私の質問は、e.valuesが未定義であることについて繰り返し私が受け取ったエラーです。私は変数を宣言したときにe.values[0]とラベル付けすることを前提としていました。つまり、スプレッドシートのフィールドから引き出された配列の順序に基づいていました。長い間巻き込まれて申し訳ありません。私は変数にダミーのコンテンツを配置し、実際のメカニズムは正常に機能するので、私のe.valuesは機能していないので、pdfを送信します。ここで Google Script e.values error

は修了証私のスクリプト //ある

// Googleドキュメントからテンプレートと名前を取得し、それ

var docTemplate = "1V_PqCBZ9vWmmIELp47X12iNtdwRCqHyOyey6VPL0o0Q"; 
var docName = "CertificateOfCompletion"; 

//フォームは、フォームからの情報を取得提出し、変数

として設定した場合
function onFormSubmit(e) { 
    var name = e.values[2]; 
    var email = e.values[3]; 
    var date = e.values[4]; 

//提出者のテンプレートdocの一時作業コピーを作成する

var copyId = DriveApp.getFileById(docTemplate).makeCopy(docName+' for '+name).getId(); 

//一時的なドキュメントを開く

var copyDoc = DocumentApp.openById(copyId); 

//

var copyBody = copyDoc.getBody(); 

//送信されたフォームからのデータとドキュメントにプレースホルダを置き換えるドキュメントに行くために、スクリプトを教えて

copyBody.replaceText('keyFullName', name); 
copyBody.replaceText('keyDate', date); 
copyDoc.saveAndClose(); 

// PDfを作成

var pdf = DriveApp.getFileById(copyId).getAs("application/pdf"); 

//

DriveApp.getFileById(copyId).setTrashed(true); } 

答えて

0

があなたの代わりに名前付きの値を使用してみましたが、一時的な文書の削除、受信者

var subject = "Certificate"; 
var body = "Congratulations!" + name + " Here is your certificate of completion " ; 
MailApp.sendEmail(email, subject, body, {htmlBody: body, attachments: pdf}); 

//に電子メールを送信します。

相続人一例

var handling = Number(e.namedValues["Call Handling"]); 
var security = Number(e.namedValues["Security"]); 
var agentName = String(e.namedValues["Agent Name"]); 

これらは私が持っている形での質問です。 e.namedValues ["text here"]の後のビット。ここでテキストをフォーム応答で呼び出されたものに置き換えてください。これが質問名になります。

なぜ私はe.values [0]以降で動作しないのか分かりません。

スクリプトはスプレッドシートにあり、メニューを介してonFormSubmitトリガーがインストールされています。

あなたのスクリプトをテストするには、あなたの関数に渡すイベントがないので、再生ボタンを押してもフォームがうまくいかなくてはなりません。