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

技術のメモ帳

気が向いたときに書いてます

[GAS]はてなブックマーク REST APIを扱うライブラリ

Google Apps Script

今回は、Google Apps Scriptで、はてなブックマーク REST APIを扱うライブラリを作成してみました。

当エントリでは、利用方法を簡単に説明したいと思います。

アプリケーション登録

まず、はてなアカウントを取得し、下記ページを参考に、アプリケーションを登録します。

Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center

アプリケーション登録後、consumer keyとconsumer secretを控えておいてください

認証用ライブラリの有効化と実装

APIの認証が、OAuth1だったため、(現在ではOAuthConfigは利用できないので)Google製のライブラリであるapps-script-oauth1を利用しています。

なお、実装については以下エントリを参考が非常に参考になりました。ありがとうございました。

まず、スクリプトエディタを開き、ライブラリを選択。M2L32TH_TklmEvt57DzRR-sLo7O4tWOsVと入力して、有効化してください。

有効化が完了したら、次のコードを書くと、OAuthで認証できます。

'use strict';

/**
 * OAuth認証用インスタンス
 * @params {string} consumer_key
 * @params {string} consumer_secret
 * @params {string} scope
**/
var service = HatenaWebService.getInstance(
  '***CONSUMER_KEY***',
  '***CONSUMER_SECRET***',
  'read_public,read_private,write_public,write_private'
);

// 認証を行う
function authorize() {
  service.authorize();
}

// 認証をリセット
function reset() {
  service.reset();
}

// 認証後のコールバック
function authCallback(request) {
  return service.authCallback(request);
}

なお、OAuth1で認証する手順として、手作業でブラウザからアプリケーションの利用を許可する必要があります。

コードをコピペしたら、authorize()を実行し、ログに表示されるURLを展開し認証してください。

はてなブックマークREST APIを操作する

こちらもモデルを操作するように利用できるようにするため、ライブラリ化しました。

MYkfPTbIKGEDQ4CBIBKtjfMLo7O4tWOsVと入力して、有効化してください。

有効化が完了したら、次のコードを書くと、はてなブックマーク REST APIを操作できます。

以下は実装例となります。HatenaBookmarkのインスタンス生成時には、上記の認証サービスが必要です。

'use strict';

// ブックマークモデル
var bookmark = HatenaBookmark.getInstance(service);

// ユーザー自身の情報を取得
function getMy() {
  var response = bookmark.get('my');
  Logger.log(JSON.parse(response));
}

// タグ一覧を取得
function getTags() {
  var response = bookmark.get('tags');
  Logger.log(JSON.parse(response));
}

// ブックマークを取得(url必須)
function getBookmark() {
  var response = bookmark.get('bookmark', { url: 'http://www.yahoo.co.jp/' });
  Logger.log(JSON.parse(response));
}

// エントリー情報を取得(url必須)
function getEntry() {
  var response = bookmark.get('entry', { url: 'http://www.yahoo.co.jp/' });
  Logger.log(JSON.parse(response));
}

// ブックマークの作成・更新(url必須)
function postBookmark() {
  var response = bookmark.post('bookmark', { url: 'http://www.yahoo.co.jp/' });
  Logger.log(JSON.parse(response));
}

// ブックマークの削除(url必須)
function destroyBookmark() {
  var response = bookmark.destroy('bookmark', { url: 'http://www.yahoo.co.jp/' });
  Logger.log(JSON.parse(response));
}

なお、APIの仕様により、POST/PUT/PATCH(作成/更新)は同一メソッドから行えます。

実行例では、URL以外のパラメータを渡していませんが、コメントやタグなども設定できるので、興味があればAPIのドキュメントを参考に利用してみてください。

各ライブラリのコード

最後にライブラリのコードです。認証用ライブラリについては、ブックマーク以外でも利用できます。

追記

このエントリ作成時は、認証とブックマークのライブラリが同一だったのですが、はてなブログなど、他のサービスでも利用できるよう、認証のみ別のライブラリに分割しました。