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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

解決済

1回答

626閲覧

Google Formで回答の選択項目毎に異なるメールアドレスに通知したい

Foosako

総合スコア1

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

0グッド

2クリップ

投稿2023/04/01 17:38

実現したいこと

google formsで送信時に指定アドレスにメールを送るscriptは実行できましたが、
できればフォームの選択肢によって送信先のアドレスを変更したいです。

前提

回答項目に「クラスを選択してください」という項目があり
例えば「Aクラス」を選択したら、Aクラス担任のメールアドレスに通知
「Bクラス」を選択したら、Bクラス担任のメールアドレスに通知
「Cクラス」を選択したら、Cクラス担任のメールアドレスに通知

と出来るようにしたいです。

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

構文エラー: Missing ; before statement. 行: 16 ファイル: コード

該当のソースコード

function sendForm(e){
// 件名、本文
var subject = "問い合わせを受け付けました";
var body = "";
// メール送信先
var to = "aaa@aaaaa.aa.aa";

var itemResponses = e.response.getItemResponses();
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
body += '\n\n['+itemResponse.getItem().getTitle()+']\n\n';
body += itemResponse.getResponse();

if (title==="クラスを選択してください") { if (ans==="Aクラス") { to = aaa@aaaaa.aa.aa; } else if (ans==="Bクラス") { to = aaa@aaaaa.aa.aa; } else if (ans==="Cクラス") { to = aaa@aaaaa.aa.aa; } }

}
MailApp.sendEmail({to:to,subject:subject, body:body});
}

試したこと

16行目はAクラスの送信先「 to = aaa@aaaaa.aa.aa 」の部分が該当のため
アドレスを変えたり…と試しましたが出来ませんでした。

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

https://teratail.com/questions/146576
この質問が、自分の求めているものにとても近かったので
参考に作ってみたのですが上手くいきませんでした。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず、

to = aaa@aaaaa.aa.aa;

の部分です。
参考にされたスクリプトがそうなっていますが、
ここはメールアドレスを代入するので、

to = "aaa@aaaaa.aa.aa";

と引用符で囲む必要があります。

また、メールアドレスの代入以外に参考にされたスクリプトを変更している部分があり、
(または、スクリプトのアップに失敗している?)
動作しない原因となっています。

元のスクリプトを基本にすると次のようになります。

javascript

1function sendForm(e){ 2 // 件名、本文 3 var subject = "問い合わせを受け付けました"; 4 var body = ""; 5 // メール送信先 6 var to = "aaa@aaaaa.aa.aa"; 7 var itemResponses = e.response.getItemResponses(); 8 for (var i = 0; i < itemResponses.length; i++) { 9 var itemResponse = itemResponses[i]; 10 var title = itemResponse.getItem().getTitle(); 11 var ans = itemResponse.getResponse(); 12 body += "\n\n[" + title + "]\n\n"; 13 body += ans; 14 if (title === "クラスを選択してください") { 15 if (ans === "Aクラス") { 16 to = "aaa@aaaaa.aa.aa"; 17 } else if (ans === "Bクラス") { 18 to = "aaa@aaaaa.aa.aa"; 19 } else if (ans === "Cクラス") { 20 to = "aaa@aaaaa.aa.aa"; 21 } 22 } 23 } 24 MailApp.sendEmail({to:to, subject:subject, body:body}); 25}

メールアドレスを有効なアドレスに変更し、
質問名と選択肢をスクリプトに合致させたフォームにトリガーを設定して
メールが送信されることを確認済みです。

ご自身で使いやすいように変更されるときは、
一度に少しずつ、動作確認をしながらやっていくと
どの変更がエラーを招いたのかが確認しやすくなります。

投稿2023/04/01 23:30

編集2023/04/02 00:52
YellowGreen

総合スコア683

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

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

YAmaGNZ

2023/04/02 00:17

引用符で囲む必要があります と解説されているところ、=が抜けてますよ
YellowGreen

2023/04/02 00:51

ありゃ。ありがとうございます。 修正しておきます。
Foosako

2023/04/02 20:12

ありがとうございます! ご指摘いただいた通りに修正したところ トリガー設定、メール通知いけました! 完全素人で困っていたのですがとても助かりました!! 素人が手を出すところではないな…と今回痛感したの ですが、もしまた機会があればアドバイス通り 少しずつ動作確認していくようにします。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問