前提
プログラミングはJavaをよくある初心者研修を受けた程度、GASは今回初めて触ります。
まず、やりたい最終目標としてはタイトルの通りで、Googleフォームに入力された内容を記載したメールを担当者へ自動で飛ぶようにGASを作成したいです。
主に以下のサイトを参考にして大まかな記述はできたのですが、フォームの中で未入力の項目があるとその項目だけ値が取れずにエラーになってしまいます(未入力なので値が無いのは当然ですが)。
https://solutions.system-exe.co.jp/appremo/blog/self-workflow
そこで、以下の質問を参考に未入力をチェックする条件式を入れたのですが、上手く動いてくれません。
https://teratail.com/questions/145802
この点の解決のため、どのように修正をすれば良いかご教示お願い致します。
実現したいこと
・フォーム側で未入力の項目があってもメールが送信されるようにしたい
試したこと
①switch文の外で以下のif文を追加し、今回の項目のみ別で値を代入するようにした。
→未入力際は、メール文に「項目名:(空白)」と表示されるようにしていた。
JavaScript
1FormApp.getActiveForm() 2function sendMessage(e) { 3 // GoogleFormから回答内容を取得 4 let itemResponses = e.response.getItemResponses(); 5 6 // 取得した回答内容を各変数に代入するためのループ 7 for (var i=0; i < itemResponses.length; i++) { 8 let formData = itemResponses[i]; 9 let formLabel = formData.getItem().getTitle(); 10 let response = formData.getResponse(); 11 12 switch (formLabel) { 13 case "質問A1": 14 A1 = response; 15 break; 16 case "質問A2": 17 A2 = response; 18 break; 19 ~(中略)~ 20 default: 21 C3 = response; 22 break; 23 } 24 25 if ( formLabel === '質問B1' && response != '') { 26 B1 = response; 27 } else{ 28 B1 = ''; 29 }
②switch文の中で以下のif文を追加した。
→未入力際は、メール文に「項目名:(空白)」と表示されるようにしていた。
JavaScript
1FormApp.getActiveForm() 2function sendMessage(e) { 3 // GoogleFormから回答内容を取得 4 let itemResponses = e.response.getItemResponses(); 5 6 // 取得した回答内容を各変数に代入するためのループ 7 for (var i=0; i < itemResponses.length; i++) { 8 let formData = itemResponses[i]; 9 let formLabel = formData.getItem().getTitle(); 10 let response = formData.getResponse(); 11 12 switch (formLabel) { 13 case "質問A1": 14 A1 = response; 15 break; 16 case "質問A2": 17 A2 = response; 18 break; 19 case "質問B1": 20 if (response != '') { 21 B1 = response; 22 } else{ 23 B1 = ''; 24 } 25 break; 26 case "質問C1": 27 C1 = response; 28 break; 29 case "質問C2": 30 C2 = response; 31 break; 32 default: 33 C3 = response; 34 break; 35 } 36
発生している問題・エラーメッセージ
試したこと①のエラーメッセージ
※(コード:77:22)の77行目は、メール本文を設定していてその中で${B1}を利用しており、そこを指しています。
ReferenceError: B1 is not defined at sendMessage(コード:77:22)
試したこと②はエラーメッセージは出ないが、該当の項目に入力があっても無くてもメール文に「空白」が表示されてしまう。
補足情報(FW/ツールのバージョンなど)
フォームの作りは以下のようにしています。
セクションA→次のセクションへ
質問A1 必須
質問A2 必須
質問A3(ラジオボタン) 必須
選択肢A3-1→セクションCへ
選択肢A3-2→セクションBへ
セクションB→次のセクションへ
質問B1 必須
セクションC→送信
質問C1 必須
質問C2 必須
質問C3 必須
ここの「質問B1」が未入力の場合が想定され、このテストをした際にエラーになります。
回答1件
あなたの回答
tips
プレビュー