GAS Date.getDay()でWebアプリ開発!フォームの曜日判定を自動化
Webアプリ開発において、フォームの入力内容に応じて処理を分岐させたい場面は多いでしょう。特に、日付に関連する処理では、曜日によって異なる処理を行うニーズがあります。例えば、特定曜日の受付を停止したり、曜日ごとに異なるメッセージを表示したりするなどです。この記事では、Google Apps Script (GAS) の Date.getDay()
関数を利用して、フォームから送信された日付の曜日を判定し、Webアプリの処理を自動化する方法を解説します。
Date.getDay()関数の基本
Date.getDay()
関数は、Dateオブジェクトから曜日を数値として取得します。数値は0から6までの範囲で、それぞれ日曜日から土曜日を表します。
- 0: 日曜日
- 1: 月曜日
- 2: 火曜日
- 3: 水曜日
- 4: 木曜日
- 5: 金曜日
- 6: 土曜日
この数値を利用することで、曜日ごとの処理を簡単に実装できます。
フォームの曜日判定とWebアプリへの実装
ここでは、フォームから送信された日付データを受け取り、Date.getDay()
関数を使って曜日を判定し、その結果に応じて処理を分岐する例を紹介します。
実装例1:特定曜日の受付を停止する
例えば、土日(土曜日:6、日曜日:0)の受付を停止したい場合、以下のようなコードで実現できます。
function doPost(e) {
const params = e.parameter;
const dateString = params.date;
const date = new Date(dateString);
const day = date.getDay();
if (day === 0 || day === 6) {
return ContentService.createTextOutput("土日は受付を停止しています。");
} else {
// 通常の受付処理
return ContentService.createTextOutput("受付完了しました。");
}
}
このコードでは、doPost
関数でフォームから送信されたデータを受け取り、日付文字列をDateオブジェクトに変換し、getDay()
関数で曜日を取得しています。取得した曜日が0(日曜日)または6(土曜日)の場合、受付を停止するメッセージを表示します。それ以外の場合は、通常の受付処理を行います。
実装例2:曜日ごとに異なるメッセージを表示する
曜日ごとに異なるメッセージを表示したい場合は、以下のようなコードを使用できます。
function doPost(e) {
const params = e.parameter;
const dateString = params.date;
const date = new Date(dateString);
const day = date.getDay();
let message = "";
switch (day) {
case 0:
message = "日曜日のご予約ありがとうございます。";
break;
case 1:
message = "月曜日のご予約ありがとうございます。";
break;
case 2:
message = "火曜日のご予約ありがとうございます。";
break;
case 3:
message = "水曜日のご予約ありがとうございます。";
break;
case 4:
message = "木曜日のご予約ありがとうございます。";
break;
case 5:
message = "金曜日のご予約ありがとうございます。";
break;
case 6:
message = "土曜日のご予約ありがとうございます。";
break;
}
return ContentService.createTextOutput(message);
}
このコードでは、switch
文を使って曜日ごとに異なるメッセージを生成し、それをクライアントに返します。
よくある問題とトラブルシューティング
日付の形式が正しくない
フォームから送信される日付の形式がGASで認識できない場合、new Date()
で正しくDateオブジェクトを生成できません。日付の形式を YYYY-MM-DD
など、GASが認識できる形式に統一する必要があります。フォーム側で入力形式を制限したり、GAS側で日付形式を変換する処理を追加したりすることで対応できます。
曜日がずれる
Date
オブジェクトは、タイムゾーンの影響を受けることがあります。GASのタイムゾーン設定が正しくない場合、曜日がずれてしまう可能性があります。GASのスクリプトプロパティでタイムゾーンを設定することで、この問題を解決できます。
カスタマイズ方法と応用例
祝日判定の追加
祝日を判定して処理を分岐させることも可能です。祝日APIを利用して祝日リストを取得し、フォームから送信された日付が祝日かどうかを判定することで、祝日の受付停止や特別なメッセージ表示などを実現できます。
時間帯による処理の変更
Date.getHours()
などの関数と組み合わせることで、時間帯によって処理を切り替えることも可能です。例えば、午前と午後で異なるメッセージを表示したり、時間帯によって利用できるサービスを制限したりすることができます。
まとめ
GASの Date.getDay()
関数を利用することで、Webアプリ開発におけるフォームの曜日判定を簡単に行うことができます。この記事で紹介した例を参考に、様々な業務課題を解決するWebアプリを開発してみてください。フォームの受付制御、曜日ごとのメッセージ表示、祝日対応など、様々なカスタマイズが可能です。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう