今回はGoogle Apps Script(以降、GAS)を用いて、はてなブログに投稿するスクリプトを紹介したいと思います。
はじめに
実装の紹介をする前に、まずは今回使用するもろもろの紹介をしたいなと思います。
GASとは
Googleアカウントを持っている人であれば誰でも簡単に利用できるサーバのようなもの。 JavaScriptのようなスクリプトを書くことで、ボットを作成したり、Googleのサービスと簡単に連携したり、いろんな自動化をしたりすることができるもの。 なので、今回のようにはてなブログへの自動投稿も簡単に実現できるようになります。
はてなブログAtomPub
自分はしっかり理解はしていないですが、なんとなくの認識だと、はてなブログが提供するAPIみたいな感じ。これを利用すれば、はてなブログのエントリ(記事)の参照(習得)、投稿、編集、削除ができる、という夢が広がるもの。
こちらが公式で公開しているドキュメントになるはず。 はてなブログAtomPub - Hatena Developer Center
実際の実装
投稿部分
function post(title, content, category) { var hatenaId = '<はてなIDをここにいれる>'; var blogId = '<ブログIDをここにいれる>'; var token = '<APIキーをここにいれる>'; var url = 'https://blog.hatena.ne.jp/' + hatenaId + '/' + blogId + '/atom/entry' var xml = '<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app"><title>' + title + '</title><author><name>' + hatenaId + '</name></author><content type="text/plain">' + content + '</content><category term="' + category + '" /><app:control><app:draft>no</app:draft></app:control></entry>' var headers = { 'Authorization' : 'Basic ' + Utilities.base64Encode(hatenaId + ':' + token), blogId: token, }; var options = { 'method' : 'post', 'contentType' : 'application/xml', 'headers' : headers, 'payload' : xml }; UrlFetchApp.fetch(url,options); }
上の方に書いてあるもろもろのパラメータを紹介します。
はてなIDとブログID
はてなのIDとブログIDをそれぞれ入力してください。 このブログの場合、
- はてなID:
ponkotsu0605
- ブログID:
pnkts.hatenablog.com
のようになります。
簡単な確認方法としては、
はてなブログの管理ページから、設定 -> 詳細設定 -> AtomPub のところに書いてある ルートエンドポイント
に書いてあるところで、自分の場合は、 https://blog.hatena.ne.jp/ponkotsu0605/pnkts.hatenablog.com/atom
と書いてあり、それぞれ
https://blog.hatena.ne.jp/<はてなID>/<ブログID>/atom
このように対応しています。なので、このエンドポイントがどのようになっているかを見ることで、簡単に確認できるかと思います。
APIキー
はてなブログの管理ページから、設定 -> 詳細設定 -> AtomPub のところに書いてあるAPIキーになります。こちらをコピペしてください。
呼び出し部分
あとは、上記で設定したメソッドを呼ぶだけです。
function main() { post( 'テスト投稿です', 'こちらはテスト投稿です\n' + '\n## テスト\n' + '\nGASから投稿できるかのテストです', 'test') }
例えば、上のようなスクリプトだと、
- タイトル: テスト投稿です
- カテゴリ: test
になります。
また、実際の投稿結果は以下のような画像になります。
上の方に空白ができていますが、こちらはGoogleアドセンスの広告部分なので気にしないでください。
このように、しっかりと投稿することができています。また、自分の場合はmarkdownで投稿するように設定しているので、スクリプト内の本分の書き方もマークダウンっぽく書いています。
さいごに・別手法
GASを利用しているということで、Gmailから投稿メールアドレスに投稿する、という別の手法でも実現はできるかと思います。
ただ、個人的にAtomPubというものを利用してみたかったので、こちらの手法を今回は紹介させていただきました。 これで、記事の投稿も自動化できますね!