朝礼や日報の前に、今日の予定を確認する手間は小さくても毎日続きます。チームの共有カレンダーなら、全員が同じ一覧をチャンネルで見られると予定の確認が揃います。
この記事では、今日の予定を毎朝 Slack へ送る手順と、予定の直前に知らせる方法を説明します。
結論
毎朝の一覧は、Samurai App のワークフローに「定期実行」を付けて作ります。「AI ボット」のステップがカレンダーを読んで一覧にし、「通知先へ送る」のステップが Slack へ送ります。
予定の直前に 1 件ずつ知らせたいときは、「サービス連携」の出来事「Event Starting Soon」(GOOGLECALENDAR_EVENT_STARTING_SOON_TRIGGER)を使います。こちらはモデルを呼ばずに送れます。
できること・できないこと
- 定期実行は最短 1 時間に 1 回です。 時刻は日本時間です。「毎朝 8 時 50 分」のように分まで指定できます
- 定期実行では「10 分前」のような予定ごとの通知は作れません。 直前の通知はサービス連携で作ります
- サービス連携の直前通知は最大 15 分遅れます。 見に行く方式のため、「5 分前」に設定すると、開始の後に届くことがあります。遅れを見込み、
minutesBeforeStartは 20 分以上にします - 終日の予定は、直前通知の対象外です。 既定では対象に入りません。入れるには
includeAllDayをオンにします - 「AI ボット」はモデルを呼びます。 実行のたびに利用料がかかります。一覧の書き方は毎回わずかに変わることがあります
- 読んだ予定はチャンネルの全員に見えます。 接続したアカウントが読める予定はそのまま対象になります。Google カレンダーの非公開の予定(
visibilityがprivate)も、参加者本人のアカウントなら詳細を読めます。個人のカレンダーをつなぐときは、指示で除くか、個人宛てのチャンネルに送ります
用意するもの
- 通知したいカレンダーを読める Google アカウント
- 投稿先チャンネルの Slack の Incoming Webhook の URL
- 定期実行の追加は、ワークフローを作った本人かマネージャー以上の権限でできます。サービス連携の追加はマネージャー以上が必要です
手順(毎朝の一覧)
完成すると、次のようなワークフローになります。

1. 通知先を登録する

Slack のアプリ設定で「Incoming Webhooks」を有効にし、「Add New Webhook to Workspace」からチャンネルを選んで URL を作ります。Samurai App の「設定」→「通知」の「通知先」に名前と URL を登録し、「テスト送信」で確認します。
2. Google Calendar を接続する
「コネクタ」画面の「コネクタ」タブで Google Calendar の「追加」を押し、「標準連携アプリで追加」を選んでサインインします。
3. ワークフローを作る
「ワークフロー」の「作成」から「新規作成」を選びます。入力の項目は要りません。
「AI ボット」のステップを置き、「指示」に次のように書きます。
Google カレンダーから、今日の 0 時から 24 時まで(日本時間)の予定を読んでください。
開始時刻の順に「09:30 定例」の形で 1 行ずつ書きます。
終日の予定は先頭に「終日 夏季休業」の形で書きます。
非公開の予定は「予定あり」とだけ書きます。
予定が無い日は「今日の予定はありません」とだけ書きます。
一覧だけを返し、前置きは書かないでください。
続けて「通知先へ送る」のステップを置いて通知先を選び、「本文」に「/」から「AI ボット」のステップの text を入れます。
4. 公開して試す
「保存」を押し、「バージョン」タブで「バージョン N を公開」を押します。「実行」タブの「公開バージョンで実行」で 1 度動かし、Slack に届く内容と、カレンダーの予定を見比べます。
5. 定期実行を付ける
「トリガー」タブの「定期実行を追加」を押します。「いつ動くか」の「cron(分 時 日 月 曜)」に次を入れます。
50 8 * * 1-5
平日の 8 時 50 分です。欄の下に、説明と次回の実行日時が表示されるので確認します。止める日が決まっていれば「終了日(任意)」も入れます。
チャットで作るとき
手順 3 は、「ワークフロー」の「チャットで作る」から次のように頼むこともできます。作られたものは下書きなので、ステップを確認してから手順 4 と 5 に進みます。
Google カレンダーの今日の予定を一覧にして、通知先「朝の予定」へ送るワークフローを作って
手順(予定の直前の通知)
1. ワークフローを作って公開する
「ワークフローの入力」で「入力の項目を追加」を押し、名前を event、種類を「項目の組」にします。「通知先へ送る」のステップの「本文」に次を書き、公開します。
まもなく開始: {{input.event.summary}}
{{input.event.start_time}}
location や hangout_link は予定によって入らない項目です。本文に直接書くと、入っていない予定で通知が失敗することがあります。最初は必ず入る項目だけで始め、「最近の実行」の入力を見てから足します。
2. サービス連携を付ける
「トリガー」タブの「サービス連携を追加」で Google Calendar の接続を選び、「どうなったら動かすか」で「Event Starting Soon」を選びます。「絞り込み」の minutesBeforeStart に分数を入れます。
動かないとき
朝の実行が「too many requests」(429)で失敗する
「標準連携アプリ」は API の上限を他社と分け合っています。Google のサービスでは、毎時 0 分の定期実行で実際に起きています。まず実行の時刻を 8 時 50 分のようにずらします。続くときは「自社の OAuth クライアントで追加」でつなぎ直します。
予定が足りない、別のカレンダーが読まれる
既定で読むのは接続したアカウントのメインのカレンダーです。チームのカレンダーを読むときは、指示にカレンダーの ID か名前を書きます。接続したアカウントがそのカレンダーを読める必要があります。
定期実行の時刻に動かない
自動実行で動くのは公開したバージョンだけです。公開していないと実行されません。「無効」や「トリガー停止中」の表示が無いかも確認します。
実行は成功するのに、予定が載らない
「AI ボット」の操作に承認が必要な設定だと、起動した人に承認カードが届き、最長 20 分待ちます。拒否や時間切れでもステップは失敗にならず、AI はその操作をせずに続けます。「受信トレイ」の承認待ちと、管理者が付けた操作の設定を確認します。
よくある質問
AI を使わずに一覧を作れますか
できますが、ステップが増えます。「コード」で今日の範囲を日本時間の日時にし、「外部サービス実行」の操作 GOOGLECALENDAR_EVENTS_LIST に timeMin、timeMax、singleEvents、orderBy を渡し、もう一度「コード」で整形して送ります。終日の予定は start.date、時刻のある予定は start.dateTime に入る点に注意します。
休日だけ止められますか
1-5 で土日は止まります。祝日は cron では分けられません。「AI ボット」の指示で祝日に触れても、送信は止まりません。