太陽がまぶしかったから

C'etait a cause du soleil.

GoogleスプレッドシートをAPI化するSheetsuはJSONPできないから微妙

f:id:bulldra:20150923085207j:plain

GoogleスプレッドシートをAPI化するSheetsu

Sheetsuは、GoogleスプレッドシートをAPIにしてくれるサービスだ。
使い方は簡単で、GoogleスプレッドシートのURLを入れてサービス連携するだけだ。
あとは指定されたURLでデータの取得や書き込みができてしまう。

 これがあれば、インドカレーの比較ランキング表とかをGoogleスプレッドシートでメンテナンスして随時ブログに反映できるかと思ったのだけど、色々微妙だったので見送った備忘録。

 既に「Googleスプレッドシートで取得」は色々とできるので、「Googleスプレッドシートから取得」もしたい。

Sheetsuの利用方法

  • スプレッドシートを作成して「共有」

f:id:bulldra:20150923082632j:plain

  • 共有可能なリンクを取得

f:id:bulldra:20150923082633j:plain

  • リンクをコピー

f:id:bulldra:20150923082634j:plain

f:id:bulldra:20150923082635j:plain

  • アクセスを許可

f:id:bulldra:20150923082636j:plain

f:id:bulldra:20150923083043j:plain

  • 取得URLが分かってしまえば同じURLで書き込めちゃうのか

f:id:bulldra:20150923085503j:plain

SheetsuはJSONPできない問題

 セキュリティ的には微妙だけど、ここまできたらJSONP方式でクロスドメインAJAXができるもんだと思ってサクッと書いてみたのだけど、コールバック仕様がなくてエラー。JSONまでは取れているのでもどかしい。

<script type="text/javascript">
$(function(){
  var url = 'http://sheetsu.com/apis/c7cf3d81'
  $.ajax({
     type: "get",
     url: url,
     data: "",
     dataType: 'jsonp',
     jsonp : "callback",
     jsonpCallback: 'callback',
     success: function(json) {
       console.log(json);
     },
     error: function(json){
       console.log(json);
     }
   });
});

function callback(json) {
  console.log(json)
}
</script>

 この手のデータは Yahoo! PipesでRSS化して、RSSをGoogleのRSS非同期取得APIでJSONP化するという無理やりな方法で取得できたのだけど、現在はYahoo! Pipesが新規作成停止をしているから不可能。

 書き込みURLにも認証がないというセキュリティ的な問題を含めてサーバーサイドでやることを想定しているんだろうけど、ブックマーク数APIやスター数APIみたいに簡単に読み込ませて表形式で表示させたいというユースケースには合わない感じだ。Google Apps Script のHtmlServiceを使うのも違うし、どうしたもんかな。

jQuery 仕事の現場でサッと使える! デザイン教科書 (Webデザイナー養成講座)

jQuery 仕事の現場でサッと使える! デザイン教科書 (Webデザイナー養成講座)