前回のラブライブ!では、Google Spreadsheetからtwitterに投稿する方法について書きました。
tumblrだっておんなじようなもんだろ?( 0w0)ノ ウェーイ とかって思って、スクリプト書いていたら、多少ハマったのでメモ的に書いておきます。
Google Apps Scriptを書いたことがある、ということを前提に書いていきます。
関連ドキュメントは以下です。
- tumblrのAPIドキュメント
- 今回の肝な Google Apps Api
tumblrにアプリを登録する
投稿するためにはtumblrで認証しないと話になんねっす。詳しくはtubmlr apiのAuthenticationあたりを読んでください。
OAuthなので、アプリを登録してConsumerKeyとConsumerSecretを取得しましょう。
アプリの登録はここから。英語ページなのに、「アプリを登録する」ボタンだけ日本語なのが趣深いです。
登録したらConsumerKeyとConsumerSecretをメモっておきましょうね。
Google Apps Scriptを書く
OAuthのための設定
前回のラブライブ! 同様に、ConsumerKeyとConsumerSecretはプロジェクトのプロパティに登録しておきます。Google Apps Scriptのスクリプトエディタの画面でファイル→プロジェクトのプロパティ→スクリプトのプロパティ
って場所に保存します。
ここでは、ConsumerKeyをtumblrConsumerKey
、ConsumerSecretをtumblrConsumerSecret
として保存しました。
そしたら、下記のような関数を作りましょう。コピペで使えます。
function tumblrInitialize() {
var oAuthConfig = UrlFetchApp.addOAuthService("tumblr");
oAuthConfig.setAccessTokenUrl("http://www.tumblr.com/oauth/access_token");
oAuthConfig.setRequestTokenUrl("http://www.tumblr.com/oauth/request_token");
oAuthConfig.setAuthorizationUrl("http://www.tumblr.com/oauth/authorize");
oAuthConfig.setParamLocation('auth-header');
var scriptProperties = PropertiesService.getScriptProperties();
oAuthConfig.setConsumerKey(scriptProperties.getProperty("tumblrConsumerKey"));
oAuthConfig.setConsumerSecret(scriptProperties.getProperty("tumblrConsumerSecret"));
}
一応解説すると、OAuthに必要な各種URLやkeyの設定を行っています。ここでの味噌はoAuthConfig.setParamLocation('auth-header');
この設定です。
この設定、デフォルトでは post-body
が設定されていますが、tumblrのAPIドキュメントを読んでいると
The API supports the OAuth 1.0a Protocol, accepting parameters via the Authorization header
って書いてあります。ヘッダに書きやがれって言ってますね。なので、この設定が超必要です。
ブログにポストする。
なんか、解説書くのがだるくなってきたのでとりあえずコード載せます。
function tumblrPost() {
var BLOG_POST_URL = "https://api.tumblr.com/v2/blog/{base-hostname}/post";
var options =
{
"oAuthServiceName" : "tumblr",
"oAuthUseToken" : "always",
"method" : "POST",
"payload" : {
"type": "text",
"body": "ブログの内容だよ'`,、('∀`) '`,、"
}
};
var result = UrlFetchApp.fetch(BLOG_POST_URL, options);
}
上記のコードは、tumblrにtextで「ブログの内容だよ'`,、('∀`) '`,、」という内容をポストするサンプルです。
「{base-hostname}」には、例えば、わたしの tumblrはhttp://hidesuke.tumblr.com なので、「hidesuke.tumblr.com」を指定します。すると、hidesuke.tumblr.comにGoogle Apps Scriptから投稿できるというわけですね。簡単簡単。
ここでのみそは options
の中にpayload
というプロパティです。ここには、POSTメソッドで送信する内容を記述します。何を書くかはtumblrのAPIドキュメンを読んで欲しいのですが、とにかくPOSTの中身はとにかくpayloadに書くんだ。
まとめ
Google Apps APIを使ってtumblrに投稿する方法を雑に解説しました。
ハマった点はauth-header
を指定する点(ドキュメントをちゃんと読みましょうという教訓を得ました)と、{base-hostname}
に最初hidesuke
と自分のアカウント名だけを入れていた点(URL的なものをいれるのが正解でしたね)。
tumblr使っている人が少ない説もありますが、前回のラブライブ!と組み合わせて、tumblrに定期的にポストするボットとかつくれると思います。
tumblr apiはリブログとかもできるらしいので、大相撲のシーズンに例の投稿を忘れずreblogするbotとかつくれると思いますのでご活用ください。
enjoy!