読者です 読者をやめる 読者になる 読者になる

元エンジニア・ちゃんみどの素人テックブログ

Web系無職がエンジニアに返り咲くための限りなく素人に近いテックブログ。 夢は旦那さんとslackで生活すること。

slackbot開発log。1日のはじめにGoogle Calendarの予定を通知したい!vol.2

slack hubot node.js

 

chanmid0.hatenablog.jp

 前回、本当はミスタースラックボット氏から通知を行いたいというところ、

普通にslackとGoogle Calendarを連携してしまったので

ミスタースラックボット氏の役目を与える事ができませんでした…

 

なので、この記事はミスタースラックボット氏が、

朝、執事のように予定を通知してくれるというゴールに向かって、

がんばろうという回にしたいっ

 

今回のラインナップ。

  • Google Calender APIの登録から
  • Node.jsのAPI接続のモジュールを使って接続
  • 途中cronのモジュール入れるのに苦労してる

 

とにもかくにもGoogle Calendar APIを使う準備

まずはAPIキーを取得しましょう。これがなきゃ始まらん!

参考にさせていただきました:Google API v3 を利用しよう!〜APIキーの取得方法〜

 

ここからAPIを取得しにいきます。

console.developers.google.com

 

Googleにログインした状態でURLを見ると、こんなかんじ。

f:id:chanmid0:20170318195059p:plain

右上からカレンダーを選びます。

f:id:chanmid0:20170318195248p:plain

プロジェクトの作成が必要とのことで、右上の「プロジェクトを作成」ボタンから作ると、

同じ画面に戻ってくるので「有効にする」リンクを押します。

f:id:chanmid0:20170318195434p:plain

次は認証情報を作成!右上のボタンを押し、作ります。

f:id:chanmid0:20170318200256p:plain

 

入力はこんなかんじ。合ってるかわからないが…

f:id:chanmid0:20170318200455p:plain

次もだいぶわからないがこんなかんじで。

 

f:id:chanmid0:20170318200547p:plain

そうするとjsonファイルがDLされてきました。

中身を見てみます。

f:id:chanmid0:20170318200659p:plain

キー情報がいろいろ詰まってますね。

 

実装の前にcronの設定をしちゃっとく

qiita.com

以降こちらのサイトを参考にしました。わかりやすかったです!

 

朝決まった時間に通知が欲しいので、cronの設定をします。

installひとつめ。

npm install cron --save

これでcronができます。そして問題はもうひとつ。

npm install time --save

これで詰まりました。原因は複数ありました。

  • pythonでエラー:pthon2.X系が必要でした。DLしてnpm config set pythonまで至れり尽くせりな対応をしてあげました。
  • Visual Basic++が入ってない:これもDLしてあげます。
  • node-gyp自体のバグ:まじかよ感半端ないけど、ユーザー名に日本語使ってるとエンコードうまくいかないかんじのエラーが出る。node.jsフォルダを遡ってこのファイルを書き換える。フォルダの場所は、「nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\easy_xml.py」。書き方は下記参考にしました。(超絶助かりました)

    create-something.hatenadiary.jp

それでもバグは全部取りきれなくて、完全に詰みました……

fatalエラーでインクルードファイル読めてないよ、と言われているのはわかったけど、そのファイルがどこにも存在しなくて追えなくなっちまいました。

もっとガツガツ、トライアンドエラーしたいところだけど、絶対条件なモジュールじゃなさそうなので、先に進んでみます。

 

戻ってGoogle Capender APIのつなぎこみじゃー!

Javaで使ってたことあるけどNode.jsで書くのは初めてです。

というわけで、準備しましょう!slackbotのフォルダの「script」フォルダ下にファイルを作ります。このフォルダにスクリプトを書くことで動くんですねー。

npm install googleapis --save

npm install google-auth-library --save

まずはこれでGoogleAPI使うためのモジュールをインストールします。

 

node.jsとGoogle Calendar APIの連携方法は公式を見ました!

Node.js Quickstart  |  Google Calendar API  |  Google Developers

 

クライアントIDを作るためにOAuth同意画面に同意します。

f:id:chanmid0:20170319212419p:plain

認証情報からクライアントIDを作ります。

f:id:chanmid0:20170319212643p:plain

次のページへ。どれに当てはまるのかな?って感じです…その他…?

 

f:id:chanmid0:20170319212730p:plain

進んでいくとクライアントIDが発行されて、一覧画面に戻ります。

戻ったら、JSONデータをDLしておきます。

f:id:chanmid0:20170319215652p:plain

DLすると、クライアントID名でjsonファイルが作られるので、命名を「client_secret.json」とし、slackbotディレクトリ>scriptsの中に入れます

次に、サンプルファイルを引っ張って動作確認をします。「quickstart.js」という名前を付けて、参考URLのソースをコピペ。slackbotディレクトリ>scriptsの中に入れます。

jsonファイルとquickstart.jsが同じ階層に入っていることを確認し、node quickstart.jsして動かします。

そうすると、「Authorize this app by visiting this url:」と表示が出て、URLが発行されます。飛ぶとアクセス許可の画面へ飛ぶので許可していきます。

f:id:chanmid0:20170319220852p:plain

許可すると、コードが発行されるので、コピーしてコマンドの「Enter the code from that page here:」のところにに貼ってください。

f:id:chanmid0:20170319220954p:plain

そうすると、カレンダーの内容が返ってきました!

f:id:chanmid0:20170319221215p:plain

わーい!!やっと光が見えてきたー!!

 

次やること

ここまで来たら、あとは作り込むだけ!…な気がする。

次は実際にプログラム書き始めたいと思います!

 

まだNode.jsの書き方とかhubotの書き方に慣れない。。

ちょっとずつがんばろう。

あとエラーの解決力もな!

 

最新WebサービスAPIエクスプロ-ラ ~Amazon、はてな、Google、Yahoo! 4大Webサービス完全攻略

最新WebサービスAPIエクスプロ-ラ ~Amazon、はてな、Google、Yahoo! 4大Webサービス完全攻略