LoginSignup
66
72

More than 5 years have passed since last update.

Slackと連携させたHubotに毎朝今日の予定をお知らせしてもらう

Last updated at Posted at 2015-05-28

現在研究室内でSlackを使用しており、せっかくなのでHubotを導入して遊んでいる。
また、研究室内で予定の共有のため、Googleカレンダーで研究室カレンダーを作成し、運用している。

しかしながら、Googleカレンダーに複数のカレンダーを表示させると見辛かったり、そもそもGoogleカレンダーを確認しない等の理由から「今日ミーティングあったっけ?」など予定を把握できていないメンバーが発生する。

そこでHubotに毎朝予定を教えてもらうようにした。

使用イメージ

  • 画像の用に毎朝9:00にHubot(miku)が今日の予定を教えてくれる
  • 時間設定があるとき
    • HH:MM:SSにXXX
  • ないとき
    • XXX
  • これらを\n区切りでつなげた文字列を発言させている スクリーンショット 2015-05-28 20.16.26.png

hubot

導入については

などの記事を参考にした。

また、foreverを使用して常駐させている。
参考: http://qiita.com/n_morioka/items/837967c0e2711198bd74

Google Calendar API

公式: https://console.developers.google.com/flows/enableapi?apiid=calendar

認証情報の取得

  • https://console.developers.google.com/start/api?id=calendar より、アプリケーションを登録する
  • 「新しいクライアントIDを作成」
    • インストールされてるアプリケーションを選択 → サービス名を入力 → その他を選択
    • 作成後JSONをダウンロードする

ダウンロードしたJSONはこんな感じ

{"installed":{
    "auth_uri":"https://accounts.google.com/o/oauth2/auth",
    "client_secret":"YOUR CLIENT SECRET",
    "token_uri":"https://accounts.google.com/o/oauth2/token",
    "client_email":"",
    "redirect_uris":["urn:ietf:wg:oauth:2.0:oob",
    "oob"],
    "client_x509_cert_url":"",
    "client_id":"YOUR CLIENT ID",
    "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"}}

パッケージのインストール

$ npm install googleapis --save
$ npm install google-auth-library --save
  • ついでに時間指定発言のためにcron、タイムゾーン指定のためにtimeもいれます
$ npm install cron time --save

CoffeeScript

ソース: https://gist.github.com/tk3fftk/42966c00eeeabf164e4e

  • したこと
    • Google公式のNode.js用サンプルをCoffeeScriptにした(それ以外は認証まわりほぼそのまま)。
    • JSONファイルから読み込んでいた認証情報をハードコードした(.coffeeだけで完結させたかったため)。
    • 既存関数の引数にHubot発言用の変数を追加して、カレンダーからの予定取得とともに発言させるようにした。
    • moment.jsを使用するようにしました
  • 初回実行時のみ、使いたいカレンダーを持っているGoogleアカウントでログインしてブラウザ上で認証し、トークンを生成する必要があります。
66
72
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
72