実現したいこと
GAS+フォームを使用して、フォームの回答内容を確認用メールとして回答者に自動送信しています。
CCには、フォームの「CC送付先(メールアドレス)」に入力されたものと、マストでGAS上に指示したメールアドレスの両方が入る仕様ですが、フォームの「CC送付先(メールアドレス)」が空欄だとエラーとなってしまいます。空欄の場合はマストでGAS上に指示したメールアドレスのみCC送付先となるように改修したいです。
発生している問題・分からないこと
フォームの「CC送付先(メールアドレス)」が空欄だと、自動送信メールが送れません。
エラーメッセージ
error
1yyyy/mm/dd hh:mm:ss エラー undefined
該当のソースコード
function autoEmails(e) { /* ◆◆ ↓↓ 回答者へのメール ↓↓ ◆◆ */ /* ステップ1: フォームのデータを取得する */ //すべての質問と回答を取得する let itemResponses = e.response.getItemResponses(); //回答者のメールアドレスを取得する let recipient = e.response.getRespondentEmail(); //回答者以外の送付先アドレスを取得する let cc = itemResponses[1].getResponse(); //回答編集用URLを取得する let editURL = e.response.getEditResponseUrl(); /* ステップ2: 必要なデータを抽出する */ //個々の質問と回答を格納するための空配列を宣言する let questionAndAnswers = []; //for文(ループ)で変数itemResponsesから個々の質問と回答を取得する for(let i = 0; i < itemResponses.length; i++) { //質問のタイトルを取得する let questionTitle = itemResponses[i].getItem().getTitle(); //回答を取得する let answer = itemResponses[i].getResponse(); //未回答の質問かどうかで送信文章を調整する if(!answer) { questionAndAnswers.push(questionTitle + ": 未回答"); } else { questionAndAnswers.push(questionTitle + ": " + answer); } } /* ステップ3: 宛先、件名、本文を決める */ //メールの件名 let subject = "【テスト】※〇△※ " + itemResponses[2].getResponse() + "_" + itemResponses[3].getResponse() + "(担当:" + itemResponses[0].getResponse() + ")" + Utilities.formatDate(new Date, "JST", "yyMMdd"); //メールの本文 let body = itemResponses[0].getResponse() + "さん\n" + "\n" + "回答ありがとうございました。\n" + "\n" + "内容をご確認ください。\n" + "\n" + "=================================\n" + questionAndAnswers.join("\n") + "\n" + "=================================\n" + "\n" + "以上" + "\n\n" + "---------------------------------------------------\n" + "署名\n" + "メールアドレス①\n" /* ステップ4: 回答者にメールを送信する */ // オプション:CC送付先アドレス+常設用アドレス //指定したアドレスから送付 let options = { cc: cc + ",メールアドレス①", from: "メールアドレス②", name:"部門名" }; //回答者にメールを送信する GmailApp.sendEmail(recipient, subject, body, options); /* ◆◆ ↑↑ 回答者へのメール ↑↑ ◆◆ */ }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
let cc = itemResponses[1].getResponse();
上記のコードでCCメールアドレスを取得し、
let options = { cc: cc + ",メールアドレス①", from: "メールアドレス②", name:"部門名" }
上記のコードで「cc: cc +」と指示しているのが問題だと思うのですが、CC送付先としてメールアドレスを2か所から引っ張ってくる方法が上記しか見つからず、行き詰っています。
補足1
条件分岐を設定してみましたが、動作しませんでした。
やってみたこと↓
//回答者以外の送付先アドレスを取得する
let cc = itemResponses[1].getResponse();
//ccが未回答かどうかでcc送信先を調整する
if(!cc) {
Answers.push(answer + ",メールアドレスA");
} else {
Answers.push("メールアドレスA");
}
//中略
/* ステップ4: 回答者にメールを送信する */
// オプション:CC送付先アドレス+常設用アドレス //指定したアドレスから送付
let options = { cc: cc, from: "メールアドレスB", name:"部門名" };
補足2
条件分岐を見直してみましたが、やはり動作しませんでした。
やってみたこと↓
//回答者以外の送付先アドレスを取得する
let cc = itemResponses[1].getResponse();
//ccが未回答かどうかでcc送信先を調整する
if(!cc.isBlank) {
Answers.push("メールアドレスA");
} else {
Answers.push(answer + ",メールアドレスA");
}
//中略
/* ステップ4: 回答者にメールを送信する */
// オプション:CC送付先アドレス+常設用アドレス //指定したアドレスから送付
let options = { cc: cc, from: "メールアドレスB", name:"部門名" };
補足3
再度構文を変更して動作確認しました。メールは送れるようになりましたが、ccにはメールアドレスAしか入らず、フォームに入力したメールアドレスがccとして設定できませんでした。
フォームの「未回答」を指定するのは「isBlank」ではないのでしょうか。素人質問ですみません。
やってみたこと↓
//回答者以外の送付先アドレスを取得する
let cc = itemResponses[1].getResponse();
//ccが未回答かどうかでcc送信先を調整する
if(!cc.isBlank) {
cc = "メールアドレスA";
} else {
cc = cc + ",メールアドレスA");
}
//中略
/* ステップ4: 回答者にメールを送信する */
// オプション:CC送付先アドレス+常設用アドレス //指定したアドレスから送付
let options = { cc: cc, from: "メールアドレスB", name:"検証中" };

回答1件
あなたの回答
tips
プレビュー