Google Sites APIと戯れてみる (Feed編)

縁あってGoogleサイトよりデータを引っこ抜くことになりました。
その備忘録を残しておきます。


我らが敬愛するGoogle様は随分前からGoogleに蓄積されたデータを取得するAPIを提供してくれています。
Google APIは取得したいサービスやらデータごとに分割されておりユーザは適宜、選択してデータを取得することが出来る。*1
しかし、利用したいサービスやデータごとにログインしたり、APIの使い方が違うため不便な点もあります。
また、取得できるデータの基本形式がGDataとかふざけた形式なのでこれを処理しないという片手落ちなところもあります。*2
今回はGoogle Sites APIを利用して、そこに蓄積されたデータを取得してみたいと思う。*3


なお、今回は認証をOAuthを利用してデモを作成しております。
この辺のやり方は id:hirokimura さんのやり方を参考にしております。*4
認証に利用するスコープはサイトの場合、https://sites.google.com/feeds/ となります。



Feedの種類
Googleサイトでは3種類のFeed取得方法があります。
Activity Feed、Revision Feed、Content Feedです。
Activity FeedはRecent site activityに紐づいた更新情報を取得します。
Revision Feedは少し特殊でコンテンツのIDを指定する必要があります。
そのコンテンツのRevision情報を取得します。
Content FeedはRecent site activityに紐づいたコンテンツの情報全てを取得します。所謂、全部のセになります。
Activity Feed、Revision Feedはその情報しか持ちませんのでデータ量は少なくなります。
モバイル端末に情報配信する分には十分役立ちますが、RIAを念頭においた場合、少し寂しい感じになります。
今回は、この中でもContent Feedを取り上げます。



Content Feedを取得する
https://sites.google.com/feeds/content//


上記のリンクにアクセスするとGData形式のフィードが取得できます。
取得してきたデータはサイトのRecent site activityに紐づいたデータになっています。
個人で利用する場合、問題になるのはの指定の仕方でしょう。
個人アカウントで利用するとドメインは付いてきませんからね。
例えば、サイトの名前が「 SamplePage 」だった場合、以下のように設定します。


https://sites.google.com/feeds/content/site/SamplePage


は「 site 」ということになります。
これは個人で利用している場合は固定になると思います。
ですので、何も考えずはsiteと設定してください。*5
なぜか取得してくる件数のデフォルトが26件となっております。
これはページネイトのことを考えての件数と思われます。*6



特筆しておくクエリーストリング
・start-index=<開始件数>何件目からデータを取得するかを設定できます。<開始件数>には数値が入ります。
デフォルトで26件取得してくるので、これを利用すればページネイトとかもできるでしょう。


・kind=<コンテンツのカテゴリ>
コンテンツを取得するためには外せないクエリーストリングです。<コンテンツのカテゴリ>には、「 webpage 」、「 filecabinet 」、「 listpage 」、「 comment 」、「attachment」などを指定できます。
これによって指定したカテゴリのコンテンツをRecent順に取得できます。
また、カンマ区切りで指定することでまとめて取得できます。*7


・path=<コンテンツのパス>
コンテンツにはパスがあると思います。
このパスを指定することでピンポイントでコンテンツの情報を取得できます。
例えば、コンテンツのパスが「 /Home/contents/path 」だとした場合、「 path=/Home/contents/path 」と指定することができます。


・parent=<コンテンツID>
コンテンツにはIDが紐づいています。
Googleでは全ての情報はIDに紐づいているため上記のような形で情報を引き出すこともできます。
この場合、あるコンテンツの子を全て取得できます。
つまり、


Home
├Subpage01
│ └SubSubpage01
└Subpage02


のようなコンテンツ構成であった場合、parentにHomeのIDを指定するとSubpage01とSubpage02の情報を取得できます。
孫までは取得できないのがポイントです。
これを使えば、サイトマップを作ることもできます*8


・q=
これはコンテンツ全てを指定された文字列で全文検索して、ヒットしたコンテンツをピックアップするものです。
その他のクエリーストリングと合わせることで詳細検索などもできます。


・その他のクエリーストリングhttp://code.google.com/intl/ja/apis/gdata/docs/2.0/reference.html#Queries



ざっとAPIの解説をしてみました。
デモ画像とかは表示しませんでしたが、実際に使ってみての注意点などを併記しておきましたので、まぁがんばれよ。

*1:もちろんAPIのないサービスもある。グループとかグループとかグループとか

*2:とんだSafariヤローだな

*3:APIのドキュメントはhttp://code.google.com/intl/ja/apis/sites/

*4:Googleドキュメントの一覧表示ガジェット

*5:Google Appsを契約している場合は、ここがそのままドメイン名になります

*6:つまり、25件+1件であり、+1件があればじページがあるという考えでしょう

*7:webpage,comment,attachment

*8:Google Sites APIにはサイトマップを取得するAPIはない