質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

664閲覧

【GAS】メールアドレスが収集できない

KJ1980

総合スコア9

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2018/02/11 01:09

編集2018/02/11 01:20

前提・実現したいこと

Googleフォームで送信されたら、入力内容が管理者にメールで配信されるようにしています。

発生している問題・エラーメッセージ

Googleフォームの設定で「回答のコピーを送信」にチェックを入れているため、メールアドレスを必ず入力してもらう仕様(必須項目)になっているのですが、以下のソースコードだと、メールアドレスのみ、なぜかメール文中に載ってきません。

フォーム上の項目(「日時」や「担当者名」など)はきちんと取得できています。

該当のソースコード

function notifyInquiryMessage(entry){ var inquiryItems = entry.response.getItemResponses(); var message = ''; /* 入力内容の抽出 */ for (var i = 0; i < inquiryItems.length; i++) { var inquiryItem = inquiryItems[i]; var question = inquiryItem.getItem().getTitle(); var answer = inquiryItem.getResponse(); message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n'; } /* 通知内容を作成 */ var address = 'hogehoge@hogehoge.jp'; var title = '申し込みがありました(自動配信メール)'; var content = 'このメールは自動配信されています。以下の内容を受信しました。' +'\n\n' + message + '\n\n' + '下記で回答を確認する' + '\n\n' +'http://www.hogehoge.jp'; /* メール送信(通知) */ GmailApp.sendEmail(address, title, content); }

質問

どのようにすればメールアドレスもメール文中に表示させるようにできますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

フォーム側にGASを設定している前提ですね。
一例ですが、jeanieさんの場合、以下のようにすればフォーム回答者のアドレスを取得できます。
var M = entry.response.getRespondentEmail();
あとは message 中、任意の場所に差し込めば良いと思います。

[参考]

投稿2018/02/11 06:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KJ1980

2018/02/11 11:09

ありがとうございます。 冒頭のところに var email = entry.response.getRespondentEmail(); を貼り、 messageのところに message += (i + 1).toString() + '. ' + question + ': ' + answer + email + '\n'; としましたが、メールが届きませんでした。 よく理解できていないのですが、questionとanswerのところは複数の内容が載るので、そのあとに続く形でemailをつけたのがよくないのかな?と思ったのですが、勘違いでしょうか。
退会済みユーザー

退会済みユーザー

2018/02/11 13:13

まず、for文の中で += を使用し、ループを抜けた後のmessageがどのような値になっているかイメージできているでしょうか? 上記のように記述すると、質問項目と回答ごとにemailが付加されますね。 「任意の場所」という表現が誤解を生んだのかもしれませんが、例えば以下の様なことです。 //for文中任意、例えば2問目の後 for (var i = 0; i < inquiryItems.length; i++) { //途中省略 message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n'; if(i == 1){message += email + '\n';} } > よく理解できていないのですが、questionとanswerのところは複数の内容が載るので、そのあとに続く形でemailをつけたのがよくないのかな?と思ったのですが、勘違いでしょうか。 もちろん、messageの前でも後でも(email + message もしくは message + email など)どこでもいいです。 > メールが届きませんでした。 よくわかりませんが、Logger.log()やデバッグでemailが取得できているか確認したほうが良いですね。
KJ1980

2018/02/12 02:03

希望した内容で、メールが無事配信されました! 色々とありがとうございました。 基礎を分かっていなかったので、勉強したいと思います。。御礼までにて失礼します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問