実現したいこと
googleフォームから研修参加の申し込みをしてもらい、
必要事項を記入後、送信してもらう。すると
その受講者にその研修参加時の受付QRコードをメールで送信する。
研修当日に受付で、そのQRコードを読み取ると、
研修の受講者に
受付完了とアンケートURLをメール
に送るようにしたいです。色々と調べて
前提
参考ホームページ
https://note.com/0375/n/n57d84bb08936
にたどり着きました。
とても希望に合っている内容で、ほぼコピペできたのですが、
上記の
_受付完了とアンケートURLをメール_を送信
というところだけがなく、自分で他のページを見たりしながら、
やっていました。
発生している問題・エラーメッセージ
しかしQRコードを読み取ると、
「Exception 無効なメール:1(行 60、ファイル「doGet」)」
と出て、メールが飛びません。
該当のソースコード
/**
- 出欠状況(登録済かどうか)を画面に表示する。
- 出席管理シートには、QRを最初に読み込んだ時の日時を反映する。
- doGetシートには、毎回のQRを読み込んだ時の日時を反映する(一つのQRコードを何度も読み込んだ場合、同一IDのログが残る)
- @param {object} e イベントオブジェクト
- @return {string}出欠状況(登録済がどうか)を画面に表示する
*/
function doGet(e) {
console.log(e)
const ss = SpreadsheetApp.getActiveSpreadsheet();
const id = e.parameter.id;
const time = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd HH:mm:ss aaa');
const recordSHT = ss.getSheetByName('doGet');
const recordVAL = [id, time];
recordSHT.appendRow(recordVAL);
const answerSHT = ss.getSheetByName('出席管理');
const asnwerRNG = answerSHT.getDataRange();
const answerVALS = asnwerRNG.getValues();
const idCOL = answerVALS[0].indexOf('ID');
const attendCOL = answerVALS[0].indexOf('出席');
const nameCOL = answerVALS[0].indexOf('氏名');
const mail_address = answerVALS[0].indexOf('メールアドレス');
let textOutput = msgTextGet();//msgTextGet関数からテキスト本文を呼び出し
for (const answer of answerVALS) {
//IDがヒットした時だけ処理する
if (answer[idCOL] === id) {
textOutput = textOutput
.replace(/{{id}}/, answer[idCOL])
.replace(/{{氏名}}/, answer[nameCOL]);
//まだ出席登録されていない if (!answer[attendCOL]) { answer[attendCOL] = time; textOutput = textOutput .replace(/{{本文}}/, '出欠登録を受け付けました。') .replace(/{{時刻}}/, time); //すでに出席登録されている } else { textOutput = textOutput .replace(/{{本文}}/, '出欠登録は受付済みです') .replace(/{{時刻}}/, `(初回受付)${answer[attendCOL]}`); } break; }
//メールを送信
const title = "研修受付完了メール"; const main = "本日の研修の受付ありがとうございました。研修終了後、本日の研修内容についてのアンケート(https://forms.gle/〇〇〇)にお答えください。どうぞよろしくお願いします。" const options = { bcc: 'teacher001@〇〇〇.jp', from: 'teacher001@〇〇〇.jp', name: 'センター 情報担当' }; GmailApp.sendEmail(mail_address, title, main,options);
}
asnwerRNG.setValues(answerVALS);
return ContentService.createTextOutput(textOutput);
}
/**
- 画面に表示するテキスト本文を生成する。
- @return {string}テキスト
*/
function msgTextGet() {
const textOutput = `
ご来場ありがとうございます!
{{本文}}
ID:{{id}}
氏名:{{氏名}}
時刻:{{時刻}}
`;
return textOutput;
}
試したこと
GmailApp.sendEmailの行の位置を変えてみたりしました。
補足情報(FW/ツールのバージョンなど)
GASの初心者です。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/06/15 06:04 編集
2023/06/17 03:21