Googleカレンダーの予定をSlackにGASで毎日通知する(無料で簡単設定)

Googleカレンダーの当日の予定をSlackにまとめて通知が来ると、便利です。

そこで、Google Apps Script(GAS)を使って毎朝始業前にSlackに自分の予定を自動投稿して確認できるスクリプトを紹介します。

※GASとSlack APIを組み合わせた形で、無料かつ簡単に設定できます。

Googleカレンダーの毎日の予定をSlack通知できると便利

Googleカレンダーで仕事や会議などの予定を管理されている人も多いです。

それに加えて、組織やチーム、関係者とのコミュニケーションツールとしてSlackが多くの企業で採用されています。

一日の仕事をスタートさせるタイミングで、Googleカレンダーで一日の予定を確認します。

Googleカレンダーのアプリまたはブラウザでアクセスし、その日の作業や打ち合わせ、会議の予定をチェックし、スケジュールや仕事の段取りを考えます。

ただ、SlackにGoogleカレンダーの予定が毎日Slackのチャンネルまたはダイレクトメッセージで届くと便利です。

コミュニケーションツールであるSlackは必ずチェックするので、チャットでの連絡有無の確認とともに、Googleカレンダーの予定が確認できると省力化に繋がります。

SlackのGoogleカレンダーアプリでは不可

チャットツールにはSlackアプリという、他のサービスと連携できる機能があります。

その中の1つにGoogleカレンダーと連携できるアプリとして「Google Calendar」が用意されています。

Slack上で他のサービスと連携できるアプリとして「Googleカレンダーアプリ」が存在

このGoogle CalendarのSlackアプリを利用すると、Slack上からGoogleカレンダーの予定を作成したり、予定を確認することができます。

ただ、「Google Calendar」アプリはサポート対象言語が英語のみとなっており、日本語での公式説明はありません。

また、毎日の予定を参照することもできますが、アプリ上で本日の予定を確認する動作が必要です。

自分宛てのダイレクトメッセージやSlackチャンネルに予定を投稿するといった通知には対応していません。

Google Apps ScriptでGoogleカレンダー×Slackを連携

Googleカレンダーのその日の予定をSlackのチャンネルやDMに通知するのを実現するのにオススメなのが、Google Apps Script(GAS)です。

Google Apps ScriptはGoogleカレンダーなどのグーグルが提供するサービスをとても簡単に利用することができます。

それに加えて、APIで他のサービスとの連携も簡単に実装できるメリットがあります。

しかも、GASの利用料は0円で、無料で利用できるので、追加コストが発生しません。

SlackAPIを発行し、GASに用意されているSlackAPI用のライブラリを利用すれば、わずか5行のコードでSlack投稿が可能です。

さらに、GASにはトリガー登録機能で、コードを○時間ごとや毎朝7~8時といったスケジュールしたタイミングで実行できます。

そのため、Googleカレンダーの当日の予定を毎朝Slackに通知したい場合には、GASで実現できます。

GASでSlackAPIを使ったボット投稿方法

Google Apps Script(GAS)でSlackAPIを使ってボット投稿する方法については以下の記事で詳細に解説しています。

GASとSlack APIでボットを作成しチャンネルにメッセージを自動投稿する方法

Slack APIのトークンを発行する手順から、GASでSlack投稿が簡単に実装できるSlackAppのライブラリの導入方法を紹介しています。

それぞれのSlackワークスペース用のSlack APIのトークンが必要なので、上記記事のSlackAPI利用設定手順を参考に発行してください。

Googleカレンダーの予定をSlack通知するGASコード

Googleカレンダーの当日の予定を取得し、Slackに通知するGoogle Apps Scriptのスクリプトを掲載し、解説します。

スプレッドシートのメニュー「ツール>スクリプトエディタ」を選択するなどして、スクリプトエディタを開きましょう。

Googleカレンダーの当日予定をSlackに通知するGASコードは以下をコピペして貼り付けます。

Google Apps Script(GAS)を使って、Googleカレンダーの当日の予定をSlackAPIを使ってダイレクトメッセージ(チャンネル)に通知するコード
function informCalendarToSlack() {
  //SlackAPIの投稿用のトークンを設定する
  let slackToken = 'xoxb-*********-************************************';
  //ライブラリから導入したSlackAppを定義し、トークンを設定する
  let slackApp = SlackApp.create(slackToken);
  //Slackボットがメッセージを投稿するチャンネル(randomを設定)を定義する(個人IDを指定すればDMも可)
  let channelId = "#random";
  //実行ユーザーのデフォルトであるGoogleカレンダーを取得する
  let myCalendar = CalendarApp.getDefaultCalendar();
  //Googleカレンダーの予定取得する日(今日)を設定する
  let calDate = new Date();
  //今日1日のGoogleカレンダーのイベントを取得する
  let myEvent = myCalendar.getEventsForDay(calDate);
  //Slackに通知するGoogleカレンダーの予定メッセージを作成
  let message ="本日のGoogleカレンダー予定です\n";
  for(let i = 0; i < myEvent.length; i++){
    //予定の開始時刻・終了時刻の時間+分を取得する。分は0~9の場合0を付与する
    let startH = myEvent[i].getStartTime().getHours();
    let startM = myEvent[i].getStartTime().getMinutes();
    if(startM < 10) startM = "0" + startM;
    let endH = myEvent[i].getEndTime().getHours();
    let endM = myEvent[i].getEndTime().getMinutes();
    if(endM < 10) endM = "0" + endM;   
    message += myEvent[i].getTitle() + "(" + startH +":"+  startM + "~" + endH +":"+  endM + ")\n";
  }
  //SlackAppオブジェクトのpostMessageメソッドでボット投稿を行う
  slackApp.postMessage(channelId, message);
}

前述した「GASとSlack APIでボットを作成しチャンネルにメッセージを自動投稿する方法」でも紹介していますが、SlackAppのライブラリを導入しています。

スクリプトエディタのライブラリの「+」アイコンをクリックし、スクリプトIDに「1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq」を入力し、SlackAppライブラリを有効にしましょう。

3行目のslackToken変数に、事前取得したSlack APIのトークンを設定します。

7行目のchannelIdに予定を通知したいチャンネル名(コードはデフォルトの#random)、または個人宛のDMの場合はユーザーIDを設定します。

※SlackのユーザーIDの調べ方の解説記事↓

以降の処理で、Googleカレンダーから実行当日の予定を取得し、予定の件名と予定の開始時刻・終了時刻をSlackに投稿しています。

毎日通知投稿するため、トリガー登録手順

先程のGoogle Apps Script(GAS)のスクリプトを毎朝仕事が始まるタイミングで自動で通知されるようにトリガー登録を行います。

GASスクリプトエディタ画面の左メニューにある時計アイコンの「トリガー」を選択し、トリガーを追加します。

Google Apps Script(GAS)でGoogleカレンダーの当日予定をSlackに毎朝通知するためにトリガー追加してスケジュール登録

赤枠の通り、実行する関数を「informCalendarToSlack」とし、日付ベースのタイマーで実行した時刻を選択し、保存ボタンを押します。

すると、設定した時間帯を迎えると、Googleカレンダーの予定をSlackに通知するGASスクリプトが自動実行されます。

Google Apps Scriptのトリガー追加すると、設定したスケジュールでスクリプトが自動実行

Googleカレンダーの当日予定Slack通知の実行結果

Google Apps Script(GAS)のスクリプトを準備し、毎日午前7~8時にスケジュール実行するよう設定しました。

実際にGoogleカレンダーの当日予定をSlack通知する実行結果を確認してみます。

Google Apps Script(GAS)実行当日のGoogleカレンダーの予定内容

GASスクリプトがスケジュール実行される当日の予定は、上のGoogleカレンダーのように4つの予定を入力しています。

今回、Googleカレンダー当日予定の通知をダイレクトメッセージとして、自分に気づきやすい形で送信することにしました。

Google Apps Script(GAS)を使って、Googleカレンダーの当日の予定を毎日(毎朝)Slackのダイレクトメッセージに通知

Googleカレンダーの当日の予定が、Slackのアプリからダイレクトメッセージとして届くようになりました。

これでわざわざGoogleカレンダーを見なくても、Slackを見るだけで1日の予定を確認できます。

まとめ・終わりに

今回、Google Apps Script(GAS)を使って、Googleカレンダーの自分の予定を毎朝Slackに自動通知する方法を紹介しました。

Googleカレンダーの1日の予定を、普段使用しているチャットツールのSlackで確認できると便利です。

そこで、GASでGoogleカレンダーの当日の予定を取得し、Slack APIを使って取得した予定を投稿するスクリプトを用意しました。

Slack APIの取得やGASのSlackAppライブラリ導入やトリガー追加もありますが、紹介した方法でどの環境でも実装できます。

無料で誰でも利用できるので、ぜひGoogleカレンダーの予定を送りたい場合は、ご活用ください。