毎日の定型業務をSlackワークフローで自動化している際、課題となるのが「祝日の扱い」です。
標準の「月〜金」設定だけでは、日本の祝日にも起動してしまいます。
Googleスプレッドシートで祝日リストを作成し、リストにない場合は平日である、というような判定ができないかと思いましたが、現在のSlackの仕様では、リストにない場合は「エラーで停止する」という挙動になってしまうため、うまく動きませんでした。
それでもどうにかSlack標準機能だけで実現できないかと試行錯誤した結果、ついにエラーを回避して確実に祝日判定を行う方法を見つけましたので、設定手順をシェアしたいと思います!
仕組みの概要
エラーとなってしまう「データが見つからない状態」を回避するために、以下のロジックを考えました。
- 判定前に、あえて「今日の日付」データをスプレッドシートに追加する。
- その状態で検索を行う(必ず何らかのデータがヒットするためエラーにならない)。
- ヒットしたデータが「元々登録されていた祝日」なのか、「直前に追加したデータ」なのかを判定する。
- 判定用に書き込んだデータを削除する。
この手順を踏むことで、エラーによる停止を防ぎながら、平日と祝日を正確に振り分けることが可能です。
1. 事前準備:祝日リストの作成
まずは参照元となるスプレッドシートを作成します。
- Googleスプレッドシートを新規作成し、シート名を「祝日リスト」とします。
- A列(日付):
- 1行目を「日付」とし、2行目以降に祝日の日付を入力します。
- 重要:Slackの日付形式と一致させるため、書式は必ず「2026年1月1日」(YYYY年M月D日)の形式にしてください。
- 祝日以外にも起動させたくない日がある場合(年末年始や創立記念日など)は、その日程もここに入れておきます。
- 1行目を「日付」とし、2行目以降に祝日の日付を入力します。
- B列(祝日名):
- 1行目を「祝日名」とします。
- 2行目以降に任意で「元日」「成人の日」などの名称を入力します。

2. Slackワークフローの設定
Slackのワークフロービルダーで、以下の順にステップを設定します。
トリガーの設定
- イベント:「スケジュールに基づく」
- 頻度:「月曜から金曜まで毎日」(時間は任意)

ステップ1:判定用データの書き込み
検索エラーを防ぐため、一時的なデータを書き込みます。
- アクション:Google Sheets「スプレッドシートに追加する」
- シート:「祝日リスト」
- 日付:変数「ワークフローが開始した時刻」
- ※変数の形式設定で「現地の日付(1990年1月1日)」を選択してください。
- 祝日名:「TODAY」と入力(任意の文字列で構いませんが、ここではTODAYとします)。

ステップ2:日付の検索
この時点でシート上には、今日が祝日なら「祝日データ」と「TODAY」の2行が、平日なら「TODAY」の1行が存在することになります。
- アクション:Google Sheets「スプレッドシートの行を選択する」
- シート:「祝日リスト」
- 検索する列を選択する:「日付」
- 検索するセルの値:変数「ワークフローが開始した時刻」
- ※ステップ1と同様、「現地の日付(1990年1月1日)」形式を指定してください。

補足:
Google Sheetsの検索は上から順に行われます。
- 祝日の場合:リスト上部にある「祝日データ」が先にヒットします。
- 平日の場合:リストにはないため、ステップ1で末尾に追加した「TODAY」がヒットします。
ステップ3:判定用データの削除
不要になった一時データを削除します。
- アクション:Google Sheets「スプレッドシートから削除する」
- シート:「祝日リスト」
- 検索する列を選択する:「祝日名」
- 検索するセルの値:TODAY

ステップ4:条件分岐(平日判定)
検索結果(ステップ2)の内容に応じて処理を分岐させます。
- アクション:「ブランチを追加する」
- ブランチ名:「平日(祝日ではない)の場合」
- 条件:「次を満たす時のみ続行」
- ターゲット:「2.スプレッドシートの行を選択する」の結果にある「祝日名」
- オペレーター:「=(等しい)」
- 比較するテキスト:TODAY

補足:
検索結果の祝日名が「TODAY」だった場合、それは「既存の祝日リストには載っていなかった(=平日である)」ことを意味します。
逆に「元日」などがヒットした場合は、この条件に合致しないため、ここで処理が終了します。
3. メイン処理の追加
作成したブランチ(平日ルート)の中に、本来実行したいステップ(メッセージ送信やフォーム通知など)を配置して完了です。
まとめと注意点
- 日付形式の統一:スプレッドシートとSlack側の変数設定が異なると正しく検索できません。「YYYY年M月D日」形式への統一を忘れないようにしてください。
- リストの更新:翌年の祝日データは自動では更新されません。年に一度、スプレッドシートへの追記が必要です。
本当はこの設定、年末年始のお休みに入る前にお届けしたかったのですが、気がつけば、すっかり休みが明けてからの投稿になってしまいました。
お正月休みの最中に通知が届いて、「あ、ワークフロー止めるの忘れてた」と少しだけ現実に引き戻された方も多いのではないでしょうか。
今回ご紹介した設定は、一度組んでしまえばこれからのゴールデンウィークや夏休みにもずっと役立ってくれます。ぜひ今のうちに設定を済ませてみてくださいね。