前提・実現したいこと
Googleフォームで、
1.ユーザーが施設を予約
2.空きがあればGoogleカレンダーに予約枠を反映して受付完了メールを自動返信
3,空きがなければ受付できないというメールが自動返信
というGASで、自動返信されるメール本文に記載(挿入)する日付が日本語表示化できずてこずっています。GAS初心者で、どこにどう挿入、記述すればいいのかがわからない状態です。
ご存じの方に教えていただければ幸いです。
発生している問題・エラーメッセージ
予定日時:Fri Sep 17 2021 09:00:00 GMT+0900 (日本標準時) から Fri Sep 17
2021 12:00:00 GMT+0900 (日本標準時)
このように表示したい
予定日時:2021年9月17日(金曜)9時00分 から 2021年9月17日(金曜)12時00分
作成したコード
dateFormat = {
_fmt : {
"yyyy": function(date) { return date.getFullYear() + ''; },
"MM": function(date) { return ('0' + (date.getMonth() + 1)).slice(-2); },
"dd": function(date) { return ('0' + date.getDate()).slice(-2); },
"hh": function(date) { return ('0' + date.getHours()).slice(-2); },
"mm": function(date) { return ('0' + date.getMinutes()).slice(-2); },
"ss": function(date) { return ('0' + date.getSeconds()).slice(-2); }
},
_priority : ["yyyy", "MM", "dd", "hh", "mm", "ss"],
format: function(date, format){
return this._priority.reduce((res, fmt) => res.replace(fmt, this._fmtfmt), format)
}
};
function onFormSubmit(e) {
// フォームの回答を取得
let Name = e.values[1];// 登録者の氏名
let Email = e.values[2];// メールアドレス
let Schedule_name = e.values[3];// 団体の名前
let Schedule_description = e.values[4];// 利用目的
let Start_time = new Date(e.values[5]);// 予約の開始時刻
let End_time = new Date(e.values[6]);// 予約の終了時刻
// カレンダーオブジェクトを取得
let Calendar = CalendarApp.getCalendarById("●●●●@group.calendar.google.com");
// カレンダーのタイムゾーンを"Asia/Tokyo"に変更する
Calendar.setTimeZone("Asia/Tokyo");
// イベントがなければ実行する関数
// "!"を用いることでBoolen化する
if(!Calendar.getEvents(Start_time, End_time).length){
// カレンダーに日程を追加
Calendar.createEvent(Schedule_name, Start_time, End_time,{description: Schedule_description});
// 自動返信メール件名
let Subject = Name + "さま " + Schedule_name + " 利用のご予約を受付しました";
// 自動返信メール本文 let Body = Name+"様 " + "\n" + "\n" + "こんにちは、●●●●です。" + "\n" + "以下の予約を承りました。" + "\n" + "予定名:" + Schedule_name + "\n" + "予定詳細:" + Schedule_description + "\n" + "予定日時:" + Start_time + " から " + End_time + " まで" + "\n" + "\n" + "(本メールは送信専用です。お問合せは下記までお知らせください" + "\n" + "\n" + "●●●●\n" + "住 所 ●●●●\n" + "電話番号 ●●●●\n" + "Eメール ●●●●@ne.jp\n" + "公式HP http://●●●●.jp"; //オプションでCCとBCCの宛先を設定する
let Options = {
"cc":"●●●●@ne.jp"
};
// メール送信
MailApp.sendEmail(Email,Subject,Body,Options);
}else{
// 自動返信メール件名
let Subject = Name + "さま " + Schedule_name + " 利用のご予約ができません";
// 自動返信メール本文 let Body = Name+"さま " + "\n" + "\n" + "こんにちは●●●●です。\n" + "誠に恐れ入りますが、ご希望いただいた下記日程が、すでに別団体さまのご予約で埋まっており、受付ができませんでした。\n" + "予定日時:" + Start_time + " から " + End_time + " まで" + "\n" + "\n" + "別の日程を再度入力いただきますようお願いいたします。\n" + "(本メールは送信専用です。お問合せは下記までお知らせください)\n" + "\n" + "●●●●\n" + "住 所 ●●●●\n" + "電話番号 ●●●●\n" + "Eメール ●●●●@ne.jp\n" + "公式HP http://●●●●.jp"; //オプションでCCとBCCの宛先を設定する
let Options = {
"cc":"●●●●@ne.jp"
};
// メール送信
MailApp.sendEmail(Email,Subject,Body,Options);
}
}
試したこと
過去の質問やほかのサイトを参照して、「 // カレンダーに日程を追加」の下に下記を挿入してみたものの、自動返信メールが配信されませんでした。
// 日付のフォーマットを指定。
if (col_name === '予約日時' && col_value != '') { // 2020/03/16
col_value = Utilities.formatDate(col_value, 'Asia/Tokyo', "YYYY'年'MM'月'dd'日'HH'時'mm'分'");
}
どこに挿入するのかも含めて、ご教示願えれば幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/16 13:33