Google Apps ScriptでBASIC認証をして、はてなブログの記事一覧を取得する
現在、自分自身のはてなブログの記事をランダムでつぶやくボットを作成したら面白そうだなと考えています。本当にランダムで自分の記事へアクセスして呟くだけだけでもいいのですが、同じ記事をつぶやくのを防いだり、PVが低い記事を優先してつぶやかせたりしたいなと思い始め、まずははてなブログの記事一覧を取得しGoogle スプレッドシートに記録しようとなりました。 そこで今回は、Google Apps ScriptでBASIC認証をして、はてなブログの記事一覧を取得するところまでを実施したので記事に残しておきたいと思います。
- Hatena Developer CenterとはてなブログAtomPubの紹介
- はてなブログAtomPubを利用する
- はてなブログAtomPubを利用するためにBasic認証をする
- まとめ
- Google Apps Scriptでいろいろやるシリーズ
Hatena Developer CenterとはてなブログAtomPubの紹介
今回はてなブログの記事一覧を取得する方法は、Hatena Developer Center にて公開されているはてなブログAtomPubを利用します。
Hatena Developer Centerでは、これらのAPIを扱うための開発者向け情報を公開しています。APIを使うことで、はてなが持つ情報・機能を利用した様々なアプリケーションやサービスを作ることができるようになります。
開発者の皆様のアプリケーション/サービスにおいて、より豊かなユーザー体験を提供するために、はてなのAPIをご活用ください。
Atom Publishing Protocol(以下 AtomPub) はウェブリソースを公開、編集するためのアプリケーション・プロトコル仕様です。はてなブログのAtomPubと通じて、開発者ははてなブログのエントリを参照、投稿、編集、削除するようなオリジナルのアプリケーションを作成できます。
はてなブログAtomPubを利用する
https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry
にアクセスすることで記事の一覧が取得できます。
各項目は下記に置き換えてください
しかし残念なことに1度に取得できる件数は7件までと制限があるようで、7件以降は<link rel="next" href="https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry?page=hogehoge" />
に再度アクセスすることで取得できます。
はてなブログAtomPubを利用するためにBasic認証をする
はてなブログAtomPub を利用するために、クライアントは OAuth 認証、WSSE認証、Basic認証のいずれかを行う必要があります。
今回は、Google Apps ScriptでBASIC認証をします。 Google Apps ScriptでBASIC認証はとても簡単です。Utilities.base64Encodeが標準で用意されていてすぐに使うことができるので、簡単にBasic認証を実行することができます。
BASIC認証に利用する情報
AtomPubのAPIキー取得方法
AtomPubのAPIキーは自身のブログの詳細設定内にあります。取得しておきましょう。
実際のコードです。 urlは自身のブログのものに変更し、さらにプロジェクトのプロパティにUSER_ID(あなたのはてなid)とPASSWORD (先程取得したAtomPubのAPIキー)を設定しておきましょう!
function doGet() { // アクセス先の情報 const url = "https://blog.hatena.ne.jp/yoshitaku_jp/yoshitaku-jp.hatenablog.com/atom/entry"; const USER_ID = PropertiesService.getScriptProperties().getProperty("USER_ID"); const PASSWORD = PropertiesService.getScriptProperties().getProperty("PASSWORD"); // GETメソッドのオプション const options = { "method" : "GET", "headers" : {"Authorization" : " Basic " + Utilities.base64Encode(USER_ID + ":" + PASSWORD)}, "muteHttpExceptions" : true } // GETメソッドのリクエスト var response = UrlFetchApp.fetch(url, options); var xml = XmlService.parse(response.getContentText()); var atom = XmlService.getNamespace("http://www.w3.org/2005/Atom"); var entries = xml.getRootElement().getChildren("entry", atom); Logger.log(entries[0].getChild("title", atom).getText()); }
ログ
[19-02-14 18:43:26:506 PST] Google Apps ScriptでBASIC認証をして、はてなブログの記事一覧を取得する
ログの中でentries[0]としているので最新のものだけが表示されていますが、これをループして7件以降は再アクセスをしていけば良さそうです! これで、Google Apps ScriptでBASIC認証をして、はてなブログの記事一覧を取得することができました!
まとめ
- Google Apps ScriptでBASIC認証をして、はてなブログの記事一覧を取得することができた
- Google Apps ScriptでBASIC認証は、Utilities.base64Encodeが標準で用意されているので簡単
- Google Apps Scriptでいろいろやるシリーズにまた一つ追加された
Google Apps Scriptでいろいろやるシリーズ
Google Apps Scriptでいろいろやるシリーズです