【Node.js】Google CalendarAPIで取得した内容をSlackにつぶやく

  • 0
    いいね
  • 0
    コメント

    はじめに

    予定やタスクの管理をGoogleカレンダーで行っている
    Googleカレンダーはカレンダーごとに通知のタイミングを設定できる(1分前、10分前、1時間前、1日前)
    だが、通知される内容はタイトルと時間だけで何分前の通知かわからない
    それによって、結局時間を確認しないといけなかったりする
    iPhoneだと通知は確認や履歴が見づらい、他の通知に埋もれてしまったり不満が多い
    なので、Google CalendarのAPIを叩いて、時間が来たらSlackに内容とその予定まで何分前かつぶやくものを作りたいと思う
    (必要そうな知識のみ書いていきます)
    今回のサンプルプログラム
    GoogleCalendar_Notice_Slack

    環境

    前提としてNPMコマンドが実行できる状況を想定しています

    手順

    1. Expressを使ってWebアプリケーションを構築する

    まずアプリを入れておくディレクトリの作成

    $ mkdir hoge
    $ cd hoge
    $ npm init
    

    expressを使える準備を行う

    $ npm install --save express
    $ npm install --save express-generator
    

    expressを利用してWebアプリケーションを構築する

    $ express -e プロジェクト名
    $ cd プロジェクト名
    $ npm install
    

    成功したか確認

    $ npm start
    

    以下のように出たら成功

    > プロジェクト名@0.0.0 start ディレクトリ名
    > node ./bin/www
    

    2. Google Calendar APIを利用できるようにする

    まずGoogle API Consoleにアクセス

    『認証情報』を押下して、『プロジェクトを作成』を押下

    キャプチャ5.PNG

    適当なプロジェクト名を入力して『作成』を押下

    キャプチャ6.PNG

    『認証情報を作成』を押下し、『OAuthクライアントID』を押下

    キャプチャ8.PNG

    『同意画面を設定』を押下

    キャプチャ9.PNG

    ユーザに表示するサービス名を適当に入力し、『保存』を押下

    キャプチャ10.PNG

    『その他』を選択し、適当な名前を入力して『作成』を押下

    キャプチャ11.PNG

    『OK』を押下

    キャプチャ12.PNG

    クライアント名を押下

    キャプチャ13.PNG

    『JSONをダウンロード』を押下
    キャプチャ14.PNG

    3. Google APIを利用して、値を取得する

    2.で取得したclient_secret_hogehogehogehogehogehogehoge.jsonファイルを
    client_secret.jsonに名前を変え
    1.で作成したフォルダのapp.jsと同じディレクトリに置いておく
    キャプチャ15.PNG

    Google CalendarAPI のNode.jsのサンプルのStep 3: Set up the sampleのコードをapp.jsのコメントの部分に追加する

    app.js
    // production error handler
    // no stacktraces leaked to user
    app.use(function(err, req, res, next) {
      res.status(err.status || 500);
      res.render('error', {
        message: err.message,
        error: {}
      });
    });
    
    /* 以下に追加 */
    /*************/
    
    
    module.exports = app;
    

    4. 実行する

    app.jsがあるディレクトリで以下のコマンドを実行

    $ npm start
    

    以下のように表示されたら成功
    キャプチャ16.PNG

    白くなっている部分をコピーして、ブラウザで叩く
    適当なアカウントを押下

    キャプチャ17.PNG

    『許可』を押下

    キャプチャ18.PNG

    表示された権限コードをコピーして、コマンドプロントに張り付けてEnter
    以下のように表示され、『calendar-nodejs-quickstart.json』が作成されていたら成功
    キャプチャ19.PNG

    5. 1時間で認証が切れてしまう問題を解決

    何度もAPIを叩く場合は以下のブログ(ステマ)を参考にしてください
    【Node.js】GoogleAPIのOAuth2の認証が1時間で切れてしまう問題

    6. Slack APIについて

    Slack APIに関しては以下の投稿(ステマ)を参考にしてください
    【Node.js】expressとbotkitを使って自分のURLを叩いたらBotがSlackにつぶやくサンプル【SlackBot】

    終わりに

    多分、これで必要な知識は記述したと思います
    全てやったことを記述すると長くなってしまうのでプログラムについてはGitHubを見てください
    この記事内以外でも質問があれば、コメントやTwitter、メールなどをください