ページ

2016年7月23日土曜日

Feedlyの未読記事をSlackへGASで通知するBotの作成 1


現在RSSリーダーは主にFeedlyを使ってるんですが、
未読記事を定期的にSlackにポストしてくれたら便利かな〜と思って
作ってみることにしました。
※ もしかしたら既にBotがある?かもしれませんが・・
事前準備

まずはここからログインし、FeedlyのDeveloper用のトークンをゲットします。

※ Feedlyのアカウントを持ってない方はこの機会にどうぞ
(⚠️Feedlyのまわし者ではありませんので・・)
ログインすると登録しているメールアドレスに認証用のメールが送られます。
送られたメールのリンクをクリックするとアクセス用のトークンがもらえます。

FeedlyのAPIを呼ぶ際に必要なトークンとなります。
試しに自分のプロフィール情報を取ってみます。
$ curl -H 'Authorization: OAuth {トークン}' https://cloud.feedly.com/v3/profile
{トークン}部分に上で取得したトークンを貼り付けます。
実行するとずらずらっとプロフィール情報が取得できたかと思います。
開発環境

次にローカルでの開発環境ですが、
こちらも以前の記事で紹介したnode-google-apps-scriptを使用します。
初期設定などは上の記事を参照して下さい。
※事前にnode.jsのインストールが必要です⚠️
まずはパッケージ情報や依存するパッケージなどを記述するpackage.jsonを作成します。
$ npm init
name: (....) feedly_slack_bot⏎ # 名前はfeedly_slack_bot
version: (1.0.0) ⏎
description: ⏎
entry point: (index.js) main.js ⏎ # 今回はmain.jsがメインファイル
・・・ 残りは好きなように設定
Is this ok? (yes) yes ⏎
以下のようなpackage.jsonが作成されているかと思います。
{
  "name": "feedly_slack_bot",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Slowhand0309",
  "license": "MIT"
}
ここで肝心のnode-google-apps-scriptをインストールします。
$ npm install node-google-apps-script --save-dev
これでGASへのアップロードがCLIで行えるようになります。
プロフィール表示

試しにGASでプロフィールを表示するまでをやってみます。
gapps initを行い、ローカルにgapps.config.jsonsrc/*.js
をダウンロードしてきます。
src/main.jsとし、↓に編集します。
/**
 * Entry function.
 */
function exec() {
  FeedlySlackBot.profile();
}

/**
 * FeedlySlackBot object.
 */
var FeedlySlackBot = {

  PROFILE_URL: 'https://cloud.feedly.com/v3/profile',

  /**
   * Get auth string.
   *
   * @return {String}
   */
  auth: function() {
    return 'OAuth {トークン}';
  },

  /**
   * Log out profile info.
   */
  profile: function() {

    var auth = this.auth();
    var response = this.get(this.PROFILE_URL, auth);
    Logger.log(response.getContentText("UTF-8"));
  },

  /**
   * Get response with auth.
   *
   * @param {String} url
   * @param {String} auth
   */
  get: function(url, auth) {
    var headers = {'Authorization' : auth};
    var options = {
      'method' : 'get',
      'contentType' : 'application/json;charset=utf-8',
      'headers' : headers
    };

    return UrlFetchApp.fetch(url, options);
  }
};
{トークン}は上で取得したトークンを設定して下さい。
アップロードし、
$ gapps upload
Google Drive上でexecを指定し実行するとログにプロフィール情報が
出力されているかと思います。
今回はここまで

0 件のコメント:

コメントを投稿