【初心者でもできた!】Google カレンダーのAPIで「今日の残り時間bot」を作る

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

みなさま、毎日の時間計画はどのように立てていますでしょうか?

本日は、この頃近所の商店街歩きに心を躍らせている新卒1年目の礒が
時間/タスク管理のために趣味で作成したbotをご紹介します。

タスクと持ち時間を把握するリスト

サーバーワークスでは社内のチャットツールにSlackを利用しているのですが、
私は自分のチャンネルで毎朝その日のタスクを書き出しています。
このように、その日の勤務時間のうち予定の入っていない時間を計算し、
各タスクにかける時間の計画を立てるようにしています。

「いつでも・自動で」算出したい

「何事も終わりを意識しろ」とよく言いますね。
都度残り時間を確認できると、進捗と照らし合わせることができます。

節目節目で残り時間をチェックしたい。
できれば自動で算出したい。

ということで、slack上で今日の残り時間を教えてくれるbotを作ることにしました。

Google APIのクライアント作成

まず、Google APIを使えるようにします。
Google APIsのコンソール画面でプロジェクトを作成してカレンダーAPIを有効にして、
「OAuth 同意画面」でサービス名を設定します。次に、「認証情報を作成」からOAuthクライアントIDを作成しましょう。アプリケーションの種類は「その他」を選択します。
クライアントIDが作成できました!
右端のボタンから、クライアントIDとクライアントシークレットのJSONファイルをダウンロードします。
※ダウンロードしたファイルの名前は「client_secret.json」に変更しておきましょう。

Google APIと戯れる

さて、クライアントIDが取得できたところで早速APIを利用してみましょう。
APIのQuick startのStep 2に沿ってライブラリをインストールします。

Step 3のquickstart.pyを参考にして書いたスクリプトがこちらです。(クリックで展開します)
52行目まではquickstart.pyと同じ内容です。

このスクリプトではFreebusyというリソースを利用しています。

辞書型で返された各予定の開始時刻・終了時刻を読み込み、空き時間を足し算します。
足し算の結果と、ついでに各予定の開始時刻を教えてもらえるようにしました。

うまく動いたらSlackのbotにこの機能を持たせていきましょう!

Slackのbotに機能実装

ついにこの時がやってきました!(あと少しです)

Slackのbotを作成してトークンを取得したら、
Slackbotライブラリをインストールして環境を作りましょう。
※長くなるので、bot作成方法については後日別記事でご説明します。

環境構築の方法は「slackbot ライブラリ」などで検索するといくつか出てくるので、
やってみてください。

プラグインに設定したファイルに先ほどのスクリプトの105行目までを貼り付け、if文の代わりに以下を入力します。

これで、Slackでbotに「残り時間」とメンションすると目当てのデータを返してくれるようになります。

プラグインのファイルが編集できたら、

でbotを起動します。

Slackで呼びかけてみましょう。
返事をしてくれました!
(botが期待した反応をしてくれると結構嬉しいし愛着がわきますね!)

おわりに

残り時間bot、いかがでしたでしょうか。
長めのポストでしたが、最後までお読みいただきありがとうございました。

みなさまも是非、「こんなものがあったらいいな」と思うものを作って
もっと楽しく、もっとラクな業務にしていきましょう〜!

AWS運用自動化サービス「Cloud Automator」