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

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

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

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

Q&A

解決済

3回答

7046閲覧

Googleフォーム回答後の自動返信機能をGoogle app scriptで設定したが返信されたメール内容が空で届く

kazuloid

総合スコア1

Google Apps Script

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

0グッド

0クリップ

投稿2021/05/29 04:43

編集2021/05/29 05:38

前提・実現したいこと

googleフォームで回答していただいた方へ、フォーム回答後、回答いただいたメールアドレス宛にサイトURLが載ったメールを自動送信するようにGoogle app scriptで設定したが自動送信されたメールの本文が空である

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

5/29 14:00テスト回答したが自動返信されず、コードが間違っているのかと思いエディタ画面で実行したところ TypeError: Cannot read property 'namedValues' of undefined onFormSubmit @ コード.gs:3 と表示されたのでコードが間違っているのか?と仮定しますが原因がわかりません。 5/29 14:33 もう一度フォームからテスト回答したところ、トリガーは機能していたようでメールが来ました! しかし今度は本文が全くない状態です。件名は反映されておりました。

該当のソースコード

function onFormSubmit(e) { // フォームの回答を取得 var name = e.namedValues["お名前"][0]; var email = e.namedValues["メールアドレス"][0]; // 自動返信メール件名 var subject = 'コミュニティslackへのご招待'; // 自動返信メール本文 var body = name + '様\n' + '\n' + '参加フォームへのご入力ありがとうございました。' + '\n' + 'slackへのご招待URLをお送りいたしますので\n' + '忘れず下記よりご参加ください。\n' + '\n' + '─────────────────────────\n' + '<参加URL> \n' + ' ここにURLがはいります \n' + '─────────────────────────\n' + '\n' + '【直近の予定】\n' + '6月5日 21:30~ 第一回交流会\n' + '6月15日 21:30~ 第二回交流会\n' + '\n' + '【slackに入ったら】\n' + '#00-初めての方へ をご覧いただき\n' + '●プロフィールの設定\n' + '●#2-自己紹介 へ自己紹介の投稿をお願いします\n' + '\n' + 'ここに運営からのにメッセージが入ります\n' + '-運営一同より\n' + // メール送信 MailApp.sendEmail({ to: email, subject: subject, body: body }); }

試したこと

初挑戦なのでわからないことだらけなのでご教示いただけたら嬉しいです。
テストで1件フォームから回答しましたが自動返信が来ず困っております。

補足情報(FW/ツールのバージョンなど)

https://valmore.work/auto-response-from-google-form/
こちらのサイトさんを参考にしソースコードに手を加え、この手順でトリガーを設定しました。
トリガーの設定までは問題なくできましたがいざテストしたら自動返信メールが来ない状態です。

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

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

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

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

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

itagagaki

2021/05/29 04:51

間違いは見当たりません。 TypeError: Cannot read property 'namedValues' of undefined このエラーメッセージは間違いなくトリガーの結果ですか? エディタでの実行結果とかではないですか?
kazuloid

2021/05/29 04:54

失礼いたしました、エディタでの実行結果です。 トリガー設定後、テスト回答→自動返信メールが来ない→コードがちゃんと機能していないのか?と思い実行を押してみたところ上記エラーが出た という流れです。 どうしたらよいのかわからず...
itagagaki

2021/05/29 05:24

エディタで実行したのでは、パラメーター e がセットされない、つまり undefined なので e.namedValues は当然エラーになります。 フォームを送信してトリガーで起動することは確認しましたか? 実行ログはエディタの左にある三本線のアイコンの「実行数」で確認できます。
kazuloid

2021/05/29 05:29

ありがとうございます、確認の仕方がそもそも違ったのですね。 実行数を見たところトリガーでもステータスが「失敗しました」とありました。 ということはトリガー追加時に問題があったということでしょうか?
itagagaki

2021/05/29 05:39

そのトリガーのところ、クリックしたら、詳細が表示されませんか? コードにconsole.log()などを仕込んでいろいろ出力するようにしたら、そこのログのところに表示されるので、それでデバッグできます。
kazuloid

2021/05/29 05:42

試しにもう一度フォームから回答したところ、メールが届きました!(原因はよくわかりませんが...) ただ今度は本文が空で届く事象が発生しております。件名は反映されています。
guest

回答3

0

最初のトリガーが機能なかったのは結局よくわからなかったのですが...

再度フォームからテスト回答したら届き、本文が空だったためコードの末尾を;
に直したところ無事思い通りの本文で自動返信ができました!

ここまで導いてくださった回答者の皆様本当にありがとうございます。
ベストアンサーお一人にしかつけられないのが心苦しいですが、確認方法など、素人にご丁寧に助言くださった皆様に心のベストアンサー押させていただきます。

投稿2021/05/29 06:09

kazuloid

総合スコア1

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

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

0

ベストアンサー

'-運営一同より\n' +

お尻の余計な + を取って ';' で文を完成させれば直ると思います。

投稿2021/05/29 05:45

itagagaki

総合スコア8402

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

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

0

var name = e.namedValues["お名前"][0];
var email = e.namedValues["メールアドレス"][0];

ここのnamedValuesというのが、うまく拾えていないようです。

以下の設定を見直してみてください。
①フォームの回答をスプレッドシートに保存するようにしている。
②そのスプレッドシート内に、このプログラムを登録している。
③トリガーで、送信時に起動するようにしている。

微妙にややこしくて、フォームとスプレッドシートに紐付いたGASであること。
かつ、関数名がonFormSubmit()で、トリガーでも送信時に起動させる必要があるみたいです。

リファレンス
https://developers.google.com/apps-script/reference/script/spreadsheet-trigger-builder

通常この手のトリガーは自動起動するはずなんですが、なんでか起動しなかったので、トリガーから設定してあげてください。

投稿2021/05/29 05:05

編集2021/05/29 05:08
Tatsunosuke

総合スコア599

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

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

kazuloid

2021/05/29 05:15

①googleフォームの回答欄右上のアイコン「回答をスプレッドシートに表示」を選びこのフォーム用に新規スプレッドシートを作って保存しています。 ②スプレッドシート内のツール→スクリプトエディタ から書き込んでいます ③トリガーを追加から 【実行する関数】onFormSubmit 【デプロイ時に実行】Head 【イベントのソース】スプレッドシートから 【イベントの種類】フォーム送信時 にして保存しています。 上記のやり方で間違いございますでしょうか?
Tatsunosuke

2021/05/29 05:16 編集

はい、問題ないです! ダメでしたか?
kazuloid

2021/05/29 05:37

もう一度テスト送信したところ自動送信はされました!が、件名はあるものの本文が空の状態で届きました... これはコード側の問題が考えられるでしょうか?
Tatsunosuke

2021/05/29 05:49

itagagakiさんのご指摘と同様となりますが、 onFormSubmit(e)のすぐ下にconsole.log(e)を入れて実行してみてログの情報が欲しいです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問