毎日通知されるKPI通知はとても便利なのだが、
土日や祝日にslackが通知されてしまうと、休日も仕事のことを考えてしまう。
という声も実際あります。
これを解決しようとしても、デフォルトのGoogle Apps Scriptのトリガーからの設定では指定することができません。
通常のGoogle Apps Scriptでは、「毎日〇〇時〜〇〇時の間で実行」や「毎週▲曜日に実行」などのトリガー指定はできるものの、土日祝日以外だけに実行するというトリガー設定はできないのです。
この記事では、強制的に平日(土日祝以外)だけGoogle Apps Scriptを実行する方法について記述します。
平日のみの実行のためにしなければならないこと
実際にしなければならないことは2つです。
①コードを追加
②トリガーを設置
この2点です。
Step1: コードの追加
強制的に平日(土日祝以外)だけ実行するためには、トリガーを設定するのではなく、毎日実行するようにトリガーが設定するが、コードで今日の日付が、「土・日・祝日」に該当する場合は処理を中断する となるように処理を記載します。
以下が対象のコードになります。
function isBusinessDay() {
const today = new Date(); // 現在の日付を取得
console.log(today);
const weekInt = today.getDay();
console.log(weekInt);
// 土日なら `true` を返す(何もしない)
if (weekInt === 0 || weekInt === 6) {
return true;
}
// 日本の祝日カレンダーを取得
const calendarId = "ja.japanese#holiday@group.v.calendar.google.com";
const calendar = CalendarApp.getCalendarById(calendarId);
const events = calendar.getEventsForDay(today);
console.log(events);
// 祝日なら `true` を返す(何もしない)
if (events.length > 0) {
return true;
}
// 平日なら `false` を返す
return false;
}
function example() { //関数名を好きなものに変換する
if (isBusinessDay()) {
return; // 土日祝なら何もしない
}
/////////////////////////////////////////////
// ↓↓↓平日のみの実行したい処理を、以下に記入↓↓↓ //
/////////////////////////////////////////////
console.log("b"); // 平日の場合のみ実行
}
たったこれだけで完了です。
このコードのconsole.log(“b”)の部分に実際に行いたい処理を記載すれば、土日祝以外で正しく実行されます。
Step2: トリガーを設置
トリガーを
①イベントのソースを選択を「時間手動型」にする。
②時間ベースのトリガーのタイプを選択を「日付ベースのタイマー」
③時刻を選択を、起動させたい時間帯に選択します。
④「保存」を押下する。

たったこれだけでトリガーが設置されます。
コードの詳細な説明
Google Apps Script(GAS)を使って、「今日は平日かどうか?」 を判定するスクリプトを作成しました。本記事では、ステップバイステップでコードの内容を説明し、どのようにして土日祝日を判定しているのかを解説します。
1. 平日かどうかを判定する関数 isBusinessDay()
スクリプト全体の流れ
• まず現在の日付を取得し、その曜日を判定します。
• 土日であれば true を返して処理を終了します。
• 祝日カレンダーを取得し、該当日が祝日なら true を返します。
• それ以外の平日は false を返します。
それではコードを詳しく見ていきましょう。
1-1. 現在の日付を取得
const today = new Date(); // 現在の日付を取得
console.log(today);
new Date() を使って現在の日付(例: 2024-02-15)を取得します。console.log(today); を入れておくと、デバッグ時に確認できます。
1-2. 曜日を取得
const weekInt = today.getDay();
console.log(weekInt);
JavaScriptの getDay() メソッドは、曜日を数値(0~6)で返します。
数値 | 曜日 |
0 | 日曜日 |
1 | 月曜日 |
2 | 火曜日 |
3 | 水曜日 |
4 | 木曜日 |
5 | 金曜日 |
6 | 土曜日 |
例えば、 weekInt が 0 または 6 なら、土日です。
1-3. 土日かどうかを判定
if (weekInt === 0 || weekInt === 6) {
return true;
}
0(日曜日) または 6(土曜日) の場合、 true を返します。これは「土日なら何もしない」という意味です。
1-4. 祝日を判定
const calendarId = "ja.japanese#holiday@group.v.calendar.google.com";
const calendar = CalendarApp.getCalendarById(calendarId);
const events = calendar.getEventsForDay(today);
console.log(events);
Googleの「日本の祝日カレンダー」を取得するために、 CalendarApp.getCalendarById() を使います。
ここで取得する calendarId は、Googleが提供している日本の祝日カレンダー です。
• “ja.japanese#holiday@group.v.calendar.google.com” というIDを使うことで、カレンダーに登録されている祝日を取得できます。
• getEventsForDay(today) で、その日が祝日かどうかをチェックできます。
console.log(events); を実行すると、祝日の場合は events 配列にデータが入っています(例: [‘建国記念の日’])。
1-5. 祝日なら true を返す
if (events.length > 0) {
return true;
}
取得した events 配列にデータが入っていれば、その日は祝日です。その場合、 true を返して処理を終了します。
1-6. 平日の場合は false を返す
return false;
ここまでの判定を通過した場合、その日は「平日」です。よって false を返します。
2. 平日のみ実行する処理
次に、isBusinessDay() を使って、平日のみ処理を実行する関数 example() を見てみましょう。
2-1. isBusinessDay() を使って土日祝日をスキップ
function example() {
if (isBusinessDay()) {
return; // 土日祝なら何もしない
}
• isBusinessDay() の戻り値が true(土日祝)なら、return して処理を終了します。
• false(平日)なら、次の処理に進みます。
2-2. 平日のみ実行したい処理
console.log("b"); // 平日の場合のみ実行
}
この console.log(“b”); の部分を、「平日のみ実行したい処理」 に置き換えればOKです。
3. 実際にこのスクリプトをどう活用するか?
このコードを使うことで、例えば以下のようなタスクを 平日のみ 実行できます。
✅ Googleスプレッドシートのデータ更新
✅ Slackへの通知(営業日だけ通知する)
✅ Webスクレイピング(週末はサーバー負荷を抑える)
例えば、 console.log(“b”); の部分を次のように変更すると、平日だけSlack通知を送る ことができます。
if (isBusinessDay()) {
return;
}
// 平日のみSlack通知を送る
const webhookUrl = "https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZ";
const payload = {
text: "今日は平日です!"
};
UrlFetchApp.fetch(webhookUrl, {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload)
});
まとめ
このスクリプトでは、Google Apps Scriptを使って「今日は平日かどうか」を判定する方法を紹介しました。
🔹 isBusinessDay() で土日祝日を判定
🔹 土日祝なら true を返して何もしない
🔹 平日なら false を返して処理を実行
🔹 example() 内で isBusinessDay() を活用して平日だけ処理を実行
このスクリプトを使えば、平日のみ自動実行したい処理を簡単に管理できます。ぜひ活用してみてください!