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

  • 1
    いいね
  • 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、メールなどをください