質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1540閲覧

Googleフォームで予約、自動で返信されるメールに、挿入する日付を日本語表示にしたい

balius2

総合スコア3

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2021/09/16 04:49

編集2021/09/16 05:58

前提・実現したいこと

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'分'");
}

どこに挿入するのかも含めて、ご教示願えれば幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

全体のコードをテストしていませんが、以下のコードを挿入すれば日本語に変換できると思います。

GAS

1let weeks_jp = [`月`, `火`, `水`, `木`, `金`, `土`, `日`]; 2let Start_time_jp = Utilities.formatDate(Start_time, `Asia/Tokyo`, `yyyy年M月d日(${weeks_jp[Utilities.formatDate(Start_time, "JST", "u") - 1]}曜)H時mm分`); 3let End_time_jp = Utilities.formatDate(End_time, `Asia/Tokyo`, `yyyy年M月d日(${weeks_jp[Utilities.formatDate(End_time, "JST", "u") - 1]}曜)H時mm分`);

テストをしてませんので動くか分かりませんが、以下が全体のコードになります。

GAS

1function onFormSubmit(e) { 2 // フォームの回答を取得 3 let Name = e.values[1]; // 登録者の氏名 4 let Email = e.values[2]; // メールアドレス 5 let Schedule_name = e.values[3]; // 団体の名前 6 let Schedule_description = e.values[4]; // 利用目的 7 let Start_time = new Date(e.values[5]); // 予約の開始時刻 8 let End_time = new Date(e.values[6]); // 予約の終了時刻 9 10 11 let weeks_jp = [`月`, `火`, `水`, `木`, `金`, `土`, `日`]; 12 let Start_time_jp = Utilities.formatDate(Start_time, `Asia/Tokyo`, `yyyy年M月d日(${weeks_jp[Utilities.formatDate(Start_time, "JST", "u") - 1]}曜)H時mm分`); 13 let End_time_jp = Utilities.formatDate(End_time, `Asia/Tokyo`, `yyyy年M月d日(${weeks_jp[Utilities.formatDate(End_time, "JST", "u") - 1]}曜)H時mm分`); 14 15 16 // カレンダーオブジェクトを取得 17 let Calendar = CalendarApp.getCalendarById("●●●●@group.calendar.google.com"); 18 // カレンダーのタイムゾーンを"Asia/Tokyo"に変更する 19 Calendar.setTimeZone("Asia/Tokyo"); 20 21 // イベントがなければ実行する関数 22 // "!"を用いることでBoolen化する 23 if (!Calendar.getEvents(Start_time, End_time).length) { 24 // カレンダーに日程を追加 25 Calendar.createEvent(Schedule_name, Start_time, End_time, { description: Schedule_description }); 26 27 // 自動返信メール件名 28 let Subject = Name + "さま " + Schedule_name + " 利用のご予約を受付しました"; 29 30 // 自動返信メール本文 31 let Body = 32 Name + 33 "様 " + 34 "\n" + 35 "\n" + 36 "こんにちは、●●●●です。" + 37 "\n" + 38 "以下の予約を承りました。" + 39 "\n" + 40 "予定名:" + 41 Schedule_name + 42 "\n" + 43 "予定詳細:" + 44 Schedule_description + 45 "\n" + 46 "予定日時:" + 47 Start_time_jp + 48 " から " + 49 End_time_jp + 50 " まで" + 51 "\n" + 52 "\n" + 53 "(本メールは送信専用です。お問合せは下記までお知らせください" + 54 "\n" + 55 "\n" + 56 "●●●●\n" + 57 "住  所 ●●●●\n" + 58 "電話番号 ●●●●\n" + 59 "Eメール ●●●●@ne.jp\n" + 60 "公式HP http://●●●●.jp"; 61 62 //オプションでCCとBCCの宛先を設定する 63 let Options = { 64 cc: "●●●●@ne.jp", 65 }; 66 // メール送信 67 MailApp.sendEmail(Email, Subject, Body, Options); 68 } else { 69 // 自動返信メール件名 70 let Subject = Name + "さま " + Schedule_name + " 利用のご予約ができません"; 71 72 // 自動返信メール本文 73 let Body = 74 Name + 75 "さま " + 76 "\n" + 77 "\n" + 78 "こんにちは●●●●です。\n" + 79 "誠に恐れ入りますが、ご希望いただいた下記日程が、すでに別団体さまのご予約で埋まっており、受付ができませんでした。\n" + 80 "予定日時:" + 81 Start_time_jp + 82 " から " + 83 End_time_jp + 84 " まで" + 85 "\n" + 86 "\n" + 87 "別の日程を再度入力いただきますようお願いいたします。\n" + 88 "(本メールは送信専用です。お問合せは下記までお知らせください)\n" + 89 "\n" + 90 "●●●●\n" + 91 "住  所 ●●●●\n" + 92 "電話番号 ●●●●\n" + 93 "Eメール ●●●●@ne.jp\n" + 94 "公式HP http://●●●●.jp"; 95 //オプションでCCとBCCの宛先を設定する 96 let Options = { 97 cc: "●●●●@ne.jp", 98 }; 99 // メール送信 100 MailApp.sendEmail(Email, Subject, Body, Options); 101 } 102} 103

投稿2021/09/16 11:04

fake_shibe

総合スコア806

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

balius2

2021/09/16 13:33

@fake_shibe さま ありがとうございます! 先ほどGAS上でテストしたところ、自動返信されるメールの本文内で、日付が日本語表示に変換されていました。 該当コードのご指摘はもちろん、それらを組み込んだ全体のコードもご教示くださりとても助かりました。こんなに早く回答をおよせくださり、本当にありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問