実現したいこと
- スプレッドシートから、下書きメールを一括で作成したい
前提
[13日 一覧]と[13日 来場者]という二枚のスプレッドシートがあります。一覧はデータベースで、来場者のシートは、IDやQRコードを生成しているシートになります。データベースから来場者シートを転記し、そのシートでIDとQRコードを生成しています。
一覧シート
A:タイムスタンプ
B:メアド
C:時間
D:名前
E:人数(10時)
F:人数(11時)
G:人数(13時)
H:人数(14時)
I:人数(15時)
来場者シート
A:来場者ID
B:メアド
C:名前
D:来場方法
E:人数
F:受付状況
G:来場時間
H:QRコード
I:フラグ
発生している問題・エラーメッセージ
・メールの下書きの内容が、スプレッドシートの不要なデータが入ってしまい、取得したいデータが取れていません。タイトルと日本語で書かれたbodyは下書きメールにあるのですが、その他の情報がスプレの1行目やらその他の行やら、取得されて入っています。
エラーメッセはありません。
該当のソースコード
//参考サイト(https://note.com/taraco123/n/nd53a0c2329d2)
//
//QRコード作成+IDを自動生成
//--------------スプレッドシート(フォームの回答)のデータ取得-----------
function qrcreat() {
var ss = SpreadsheetApp.getActiveSpreadsheet();//スプレッドシートを有効にする
var fsheet = ss.getSheetByName("13日 一覧");//フォームの回答
var fsheet_Range = fsheet.getDataRange();
var fData = fsheet_Range.getValues();
//--------------各項目を抜き出し----------
var stamp = fData[0]; //タイムスタンプ
var mail = fData[1]; //メール
var date = fData[2]; //時間
var name = fData[3]; //名前
var total = fData[4]+fData[5]+fData[6]+fData[7]+fData[8]; //人数
var way = fData[10]; //来場方法
//----------------ここまでがフォームの回答を取得-------------------//
//----------------ここからが、来場者シートに転記-------------------//
var sht = ss.getSheetByName("13日 来場者");
//console.log(sht);
var lastrow = sht.getLastRow(); // 最終行を取得
var lastcol = sht.getLastColumn(); // 最終列を取得
var range = sht.getRange(1, 1, lastrow, lastcol);
var values = range.getValues(); // 情報をオンメモリに保持
//----------------ここからが、QR作成とID設定------------------//
// /*来場者シートのデータを全部取得し、1行ずつチェック。
// A列が空欄の場合はランダムな文字列を記入。
// I列にQRコードの数式を設定
// */
for (var i = 1; i < lastrow; i++) {
data = values[i][0];
if (data == "") {
values[i][0] = getRndStr();
}
values[i][8] = false;
var qrc1 = '=image("https://chart.apis.google.com/chart?chs=250x250&cht=qr&chl=\"&A' + (i + 1) + ')';
values[i][7] = qrc1;
}
range.setValues(values); //スプレッドシートに書き戻し
// /回答の名前と一致する行の1列目をidとして取得する/
for (let row = 1; row <= lastrow; row++) {
if (sht.getRange(row, 3).getValue() == name) {
var id = sht.getRange(row, 1).getValue();
}
}
// メール作成時にstamp, email, date, id, name, totalを渡す。
createDraft(stamp, email, date, id, name, total);
}
//----------------ここからが、下書きメール作成------------------//
function createDraft(stamp, email, date, id, name, total) {
//11時のみ送信
if (date === "2024年4月1日(月) 11:00") {
const mailTitle = "イベント予約結果について";
const imageurl = 'https://chart.apis.google.com/chart?chs=250x250&cht=qr&chl=' + id;
const response = UrlFetchApp.fetch(imageurl); // option削除
const blob = response.getBlob().getAs(MimeType.JPEG);
const option = {
method: "get",
"attachments":blob,
'name':'イベント事務局'
}
// // QRコード付きのメール
var mailBody = "この度はお申込みをいただきありがとうございます。下記の内容でご予約を承りました。\n 当日、このメールに添付されているQRコードを受付でご提示ください。 \n\n"
- ' 【受付日】: ' + stamp + ' \n'
【予約日】:${date}\n
- ' 【氏 名】:' + name + '様\n'
- ' 【来場者ID】:' + id + '\n'
- ' 【お申込み人数】:' + total + '名\n'
- ' 【URL】:' + + '名\n'
- "-------------------------------\n"
- "-------------------------------\n"
GmailApp.createDraft(email, mailTitle, mailBody, option);
}
//----------------ここからが、11時以外の下書きメール作成------------------//
// //11時以外
if (date !== "2024年4月1日(月) 11:00") {
const mailTitle = "イベント予約結果について";
const imageurl = 'https://chart.apis.google.com/chart?chs=250x250&cht=qr&chl=' + id;
const response = UrlFetchApp.fetch(imageurl); // option削除
const blob = response.getBlob().getAs(MimeType.JPEG);
const option = {
method: "get",
"attachments":blob,
'name':'イベント事務局'
}
// // QRコード付きのメール
var mailBody = "この度はお申込みをいただきありがとうございます。下記の内容でご予約を承りました。\n 当日、このメールに添付されているQRコードを受付でご提示ください。 \n\n"
- ' 【受付日】: ' + stamp + ' \n'
【予約日】:${date}\n
- ' 【氏 名】:' + name + '様\n'
- ' 【来場者ID】:' + id + '\n'
- ' 【お申込み人数】:' + total + '名\n'
- "-------------------------------\n"
- "-------------------------------\n"
GmailApp.createDraft(email, mailTitle, mailBody, option);
}
}
function getRndStr() {
var str = "abcdefghijklmnopqrstuvwxyz0123456789";
var len = 8;
var result = "";
for (var i = 0; i < len; i++) {
result += str.charAt(Math.floor(Math.random() * str.length));
}
return result;
}
// function updateForm() {
// console.log("ダミーのupdateForm()が呼ばれました。")
// }
試したこと
function createDraft(stamp, email, date, id, name, total)
で、function qrcreatで書いたコードを受けるようにしたのですが、上手くいきませんでした。
どのように変更すればうまくいくのか、ご教示ください。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
特にありません。
0 コメント