9
6

More than 5 years have passed since last update.

Google Spreadsheet(Google Apps Script)からtumblrに投稿する方法

Last updated at Posted at 2015-02-14

前回のラブライブ!では、Google Spreadsheetからtwitterに投稿する方法について書きました。

tumblrだっておんなじようなもんだろ?( 0w0)ノ ウェーイ とかって思って、スクリプト書いていたら、多少ハマったのでメモ的に書いておきます。

Google Apps Scriptを書いたことがある、ということを前提に書いていきます。

関連ドキュメントは以下です。

tumblrにアプリを登録する

投稿するためにはtumblrで認証しないと話になんねっす。詳しくはtubmlr apiのAuthenticationあたりを読んでください。
OAuthなので、アプリを登録してConsumerKeyとConsumerSecretを取得しましょう。
アプリの登録はここから。英語ページなのに、「アプリを登録する」ボタンだけ日本語なのが趣深いです。
登録したらConsumerKeyとConsumerSecretをメモっておきましょうね。

Google Apps Scriptを書く

OAuthのための設定

前回のラブライブ! 同様に、ConsumerKeyとConsumerSecretはプロジェクトのプロパティに登録しておきます。Google Apps Scriptのスクリプトエディタの画面でファイル→プロジェクトのプロパティ→スクリプトのプロパティって場所に保存します。
ここでは、ConsumerKeyをtumblrConsumerKey、ConsumerSecretをtumblrConsumerSecretとして保存しました。

そしたら、下記のような関数を作りましょう。コピペで使えます。

js
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

って書いてあります。ヘッダに書きやがれって言ってますね。なので、この設定が超必要です。

ブログにポストする。

なんか、解説書くのがだるくなってきたのでとりあえずコード載せます。

js
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!

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6