2017-07-04 10 views
-1

新しいユーザーがフォームを送信したという通知ではなく、Googleフォームの内容を電子メールに送信したいと考えています。私は次のコードを書いた。しかし、namedValuesが定義されていないという応答が返されます。実際にダミーのGoogleフォームを送信しようとしましたが、まだGoogleフォームの内容をメールで送信しません。 function sendFormByEmail(e){ var email = "[email protected]";ユーザーがGoogleフォームを送信した後にGoogleフォームの内容を電子メールで取得する

var Name = e.values[3]; 
var EmailAddress = e.values[4]; 
var txt = ""; 
for(var field in e.namedValues) { 
txt += field + ' :: ' + e.namedValues[field].toString() + "\n\n"; 
} 
MailApp.sendEmail(email, "New Client", txt); 
} 

答えて

1

スクリプトがフォームに添付し、そのフォームが送信されたときにトリガされた場合は、そのイベントにresponse objectを使用しています。 AFAIKアクセスしようとしているnamedValuesオブジェクトは、スクリプトがフォーム入力を受け取ったスプレッドシートにアタッチされている場合にのみ使用できます。あなたは上のいくつかのテストを使用することができます

function onFormSubmit_sendEmail(e) { 
    var msgBody = ""; 
    var itemResponses = e.response.getItemResponses(); 
    for (var i = 0; i < itemResponses.length; i++) { 
    var itemResponse = itemResponses[i]; 
    msgBody = msgBody + itemResponse.getItem().getTitle() + ": " + itemResponse.getResponse() + "\n\n"; 
    } 
    MailApp.sendEmail("[email protected]", "Form Submission", msgBody); 
    } 
} 

:私はすぐに(これおよび多くを行うことができますアドオンを使用していない)電子メールアドレスに、単純なフォームの送信を送信する場合

私はこのスクリプトを使用しますアイテムのタイトル(getTitle() method)は、質問に応じて異なることを行う - 例えばメールを送信する場所が1つの場合は、

if (itemResponse.getItem().getTitle() == "Recipient Address") { 
    var email = itemResponse.getResponse(); 

MailApp.sendMail()関数を使用できます。お役に立てれば。

関連する問題