はじめに
予定やタスクの管理を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にアクセス
『認証情報』を押下して、『プロジェクトを作成』を押下
適当なプロジェクト名を入力して『作成』を押下
『認証情報を作成』を押下し、『OAuthクライアントID』を押下
『同意画面を設定』を押下
ユーザに表示するサービス名を適当に入力し、『保存』を押下
『その他』を選択し、適当な名前を入力して『作成』を押下
『OK』を押下
クライアント名を押下
3. Google APIを利用して、値を取得する
2.で取得したclient_secret_hogehogehogehogehogehogehoge.jsonファイルを
client_secret.jsonに名前を変え
1.で作成したフォルダのapp.jsと同じディレクトリに置いておく
Google CalendarAPI のNode.jsのサンプルのStep 3: Set up the sampleのコードを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
白くなっている部分をコピーして、ブラウザで叩く
適当なアカウントを押下
『許可』を押下
表示された権限コードをコピーして、コマンドプロントに張り付けてEnter
以下のように表示され、『calendar-nodejs-quickstart.json』が作成されていたら成功
5. 1時間で認証が切れてしまう問題を解決
何度もAPIを叩く場合は以下のブログ(ステマ)を参考にしてください
【Node.js】GoogleAPIのOAuth2の認証が1時間で切れてしまう問題
6. Slack APIについて
Slack APIに関しては以下の投稿(ステマ)を参考にしてください
【Node.js】expressとbotkitを使って自分のURLを叩いたらBotがSlackにつぶやくサンプル【SlackBot】
終わりに
多分、これで必要な知識は記述したと思います
全てやったことを記述すると長くなってしまうのでプログラムについてはGitHubを見てください
この記事内以外でも質問があれば、コメントやTwitter、メールなどをください