Googleスプレッドシートで簡単JSONP api

最近はMacユーザも増え(僕も去年の15inch retinaで初めて)たり、プリインストールでofficeが入ってないwindowsも増えたせいか、仕事でも学校でもgoogle driveでドキュメント作成することが増えました。

それらのシートを情報テーブルとして、リアルタイムに編集できたり、取得できたらいいなーと思って調べたらありました。(というよりやらなきゃいけなくなったので、調べてたら、とりあえず出来た)

昔から利用されているExcelのシートとかを、googleスプレッドシートに移植して、WEB経由でアクセスしたり、用途は色々ありそうです。便利です。

つまり、googleスプレッドシート内の情報をJSONP形式で出力するAPI(というと大げさだけど)にしてみます。取得はjqueryのajax関数(datatype:’jsonp’)とかで。別にajaxで取得したいわけじゃなければjsonpじゃなくて、txtやcsv出力なら、プログラムを書かずに実現できます。今回書いたのはjsonpでajaxで取得するためのスクリプトです。

スプレッドシートを作成し、メニューから[tool] -> [script editor]でスクリプトを新規作成・登録できます。

 

本当は取得する列も行もparameterで色々指定するように書いてたんですが、ブログ用にできるだけシンプルにしました。 ユーザ一覧みたいな情報が格納されているテーブルから、IDと名前とアドレスを取得して、ユーザ一覧情報をjson形式にしてreturnしています。

ここでポイントはjsonpに対応するためにcallback用のパラメータをreturnする文字列の中に含める、ということです。これがないと正常に取得できませんでした。(req.parameters.callback)のところです。

任意のスクリプトを書いて保存した後は、[Deploy as web app]をクリック。アクセス用のURLを発行します。

それができたら今度は自分のアプリケーションからajax経由で先ほどのURLからJSONをダウンロードしてきます。

これでOK。responceにjsonはいってるんで、好きにいじくる。僕が使ったシチュエーションだとangularJS使ってたんで、モデルに取得したjsonつっこむだけでオブジェクトがたっぷり!みたいな嬉しい感じでした。

これしかない!!っていうときは少ないと思いますが、既存のスプレッドシートにデータがたくさんあるなら、ざっくりこういうのが書ければ便利かなー、と思います。

Googleスプレッドシートで簡単JSONP api」への2件のフィードバック

  1. 簡単JSONP
    便利ですね

    IE9で表示されなかった
    スクリプトは、MIME の種類が一致しないため、ブロックされました
    Google Chromeでは表示された

    何故かな?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です