仕事の自動化
MakeでGoogleカレンダーの今日の予定をSlackにまとめて送る方法
この記事の目次
朝、Googleカレンダーを開き、今日の会議をSlackへ書き写している。その共有を続けたいなら、Makeで予定を検索して、ひとつのメッセージにまとめられます。会議ごとに通知を増やさず、朝の一覧として届ける作り方です。
Makeは、アプリの処理を画面上でつないで動かす自動化ツールです。この記事では「共有してよいカレンダーから今日の予定名とリンクを取り出す」例を扱います。公式資料をもとにした設定ガイドで、実際のカレンダーとSlackを接続して検証したレビューではありません。
Slack標準連携で足りるかを先に確認する
会議のリマインダーや予定変更の通知なら、SlackのGoogle Calendarアプリが候補です。共有カレンダーから毎日・毎週の予定を通知する機能もあり、公式ヘルプでは有料プラン向けと案内されています。すでに使える環境なら、まず標準機能で十分かを確認してください。Slack公式の連携方法
Makeを使う理由は、通知文に自分たちの案内を加えたり、後から条件分岐や別アプリへの保存を組み込んだりできることです。ただし、接続や使用量の管理は増えます。標準連携より安い、必ず無料で続く、という意味ではありません。
予定3件を、Slackの1メッセージへ
- Google Calendar今日の予定を検索
予定ごとのデータ - Text aggregator予定名とリンクを
ひとつの文章へ - Slack朝の一覧として
1回送信
最初は共有専用のテストカレンダーで試す
個人の予定をそのまま全員向けチャンネルへ送らないよう、共有用カレンダーとテスト用チャンネルを用意します。練習では「朝の確認」「資料レビュー」「翌日の打ち合わせ」の3件を作り、最後の1件だけ翌日に置いてください。件名や日時は架空のもので構いません。
Makeの新しいシナリオにGoogle CalendarのSearch Eventsを追加します。Create a connectionからGoogleアカウントを接続し、Calendar IDでテストカレンダーを選びます。承認画面ではアカウントと権限を確認し、会社の連携制限がある場合は管理者に相談します。Make公式:Google Calendarの接続
今日の0時から、翌日の0時までを検索する
最初のテストでは、Start DateとEnd Dateへ対象日の範囲を入力して取得結果を確認します。毎日の運用に切り替えるときは、固定日付のままにせず、次の日時式に置き換えます。日本時間を明示した当サイトの設定例です。
Start Date(日本時間の今日0時)
{{parseDate(formatDate(now; "YYYY-MM-DD"; "Asia/Tokyo"); "YYYY-MM-DD"; "Asia/Tokyo")}}
End Date(日本時間の翌日0時)
{{addDays(parseDate(formatDate(now; "YYYY-MM-DD"; "Asia/Tokyo"); "YYYY-MM-DD"; "Asia/Tokyo"); 1)}}
式は文字列として残さず、Makeの入力欄で関数として認識されることを確認します。formatDateで日本の日付を取り出し、parseDateでその日の0時に戻しています。関数とタイムゾーンの公式説明
Queryは最初は空欄にし、繰り返し予定を扱うSingle EventsはYes、取得上限のLimitは想定件数より余裕を持たせます。たとえば練習3件なら10件に設定します。これは設定例で、サービスの上限値ではありません。予定が上限に達した日は、欠けていないか元のカレンダーと照合してください。
SlackはまだつながずRun onceで読み取ります。今日の2件が含まれ、翌日の予定が混ざらないかを確認します。終日予定や日付をまたぐ予定は、時刻付き予定とは出力が異なることがあるため、実際に使う場合は追加で試します。
予定を1行ずつ並べ、通知をひとつにまとめる
右隣にToolsのText aggregatorを置きます。複数件のデータを文章としてまとめる処理です。これを挟まず検索結果をSlackにつなぐと、予定ごとに送信が走る構成になり得ます。Make公式:Text aggregator
Source ModuleにGoogle CalendarのSearch Eventsを選び、Row separatorをNew rowにします。Textには次の形で予定名とリンクを差し込みます。角括弧は説明用なので、そのまま入力せず、カレンダーの出力にあるSummaryとHTML linkに対応する項目を選んでください。
・[予定名 / Summary] [予定を開くリンク / HTML link]
空の一覧を送らない例にするため、詳細設定のStop processing after an empty aggregationをYesにします。この構成では、予定がない日に「予定なし」と送る仕組みは作っていません。検索・集約の設定項目はMake公式のカレンダー連携例でも確認できます。
Slackへ送る前に、完成する文面を決める
最後にSlackのSend a Messageを追加し、テスト用チャンネルを選びます。本文には、検索結果そのものではなく、Text aggregatorが出力するTextを差し込みます。Make公式:Slackの接続
今日の共有予定(朝の取得時点) [Text aggregatorのText] 変更後の日時や詳細は、各予定のリンクから確認してください。
この文面なら、朝に取得した一覧であることが伝わります。送信後にカレンダーを変更しても、すでに送ったSlackの文章が自動で書き換わる構成ではありません。急な変更の連絡まで任せたい場合は、更新通知を別に設計する必要があります。
動作確認は「届いた」だけで終わらせない
| 試す内容 | 期待する結果 |
|---|---|
| 今日2件、翌日1件 | 今日の2件を含む1メッセージ。翌日の1件は含めない |
| 今日の予定が0件 | 空の一覧を送らない |
| 繰り返し・終日予定 | 今日の予定が欠けたり、同じ予定が重なったりしない |
| 予定のリンクを開く | 読む人が必要な詳細へアクセスできる |
予定名が読めても、リンク先を開く権限がない場合があります。逆に、閲覧権限のない人にも通知文へ転記した予定名は見えるため、送る内容とチャンネルのメンバーを合わせて確認します。
Run onceを繰り返すと、同じ日の一覧も繰り返し送られます。この例に送信済み判定はありません。テストはテスト用チャンネルだけで行い、本番で手動実行する前には当日の履歴を見てください。
毎朝の実行と、無料枠を確認する
確認が済んだらスケジュールを毎日1回にし、たとえば9時に設定します。スケジュール側のタイムゾーンも日本時間か確認します。日時式を日本時間にしても、実行時刻の設定まで自動で揃うわけではありません。Make公式:スケジュール設定
Makeの無料プランにも利用枠があります。検索、集約、送信、テストの再実行を含む実行履歴で消費を確認し、最新のプラン条件と照合してください。運用後は「朝の転記をやめられたか」「不要な通知が増えていないか」を見て、続ける価値を判断できます。
毎朝の共有文を手で書いているなら
まずはMakeでテストカレンダーを1日分読み取り、予定が2件でもSlackには1メッセージだけ届くところまで試してください。通知の文面を自分たちの運用に合わせられるかが、導入を決める基準になります。