最初にhttp://www.google.com/jsapiからAPIのスクリプトを読み込みます。Google AJAX API の使用
<script type="text/javascript" src="http://www.google.com/jsapi?key=xx"></script>
スクリプトを読み込むときのクエリ「?key=xx
」のxx
には、APIキーを記述します。これはGoogle APIs Consoleで取得でき、Simple API Accessの項目にあるKey for browser appsの[API key]がそれです。なおこのキーは、APIを使用する上で問題が生じたときにGoogleから通知を受けたい場合に用いるもので、必須ではありません。AJAX API キーの使用 - Google AJAX Search API - Google Code
google.load( moduleName, // APIの名前 moduleVersion, // APIモジュールのバージョン optionalSettings // オプション設定 )
プロパティ | 説明 |
---|---|
callback | |
language | |
nocss | |
packages | |
base_domain | |
other_params |
google.load( 'search', '1' );
google.setOnLoadCallback( OnLoad );
function OnLoad() { new google.search.SearchControl(); }
検索結果に対して何らかの処理を行う場合には、コールバック関数を登録することでこれを実現できます。検索コントロール コールバック - Google Code
imageSearch = new google.search.ImageSearch(); imageSearch.setSearchCompleteCallback( this, // SearchComplete, // 呼び出す関数 [ imageSearch ] // 関数に渡す引数 (配列) );
第3引数がかっこで囲まれているのは配列で渡す必要があるためで、上記では要素が1つの配列として定義しています。
一回の検索で結果として返されるのは、setResultSetSize()メソッドで設定した数だけです。しかしこのメソッドでは最大で8件 (LARGE_RESULTSET) までしか設定できないため、すべての検索結果は取得できません。
そこで検索完了時にさらに続きを検索するようにすることで、すべての検索結果を取得できるようにします。
検索結果はページという単位でまとめられていますので、続きを検索するにはそのページの番号を指定して検索します。
// 検索完了時に呼び出されるコールバック関数 function SearchComplete( searcher ) { var current = searcher.cursor; // cursorオブジェクト var currentPage = current.currentPageIndex; // 現在のページ番号 if( currentPage < cursor.pages.length - 1 ) { var nextPage = currentPage + 1; // 次のページのページ番号 // 次のページを検索する searcher.gotoPage( nextPage ); } }
gotoPageは、google.search.Searchのメソッドです。
追加の検索を行うための情報は、検索が正常に完了したときにsearchオブジェクトのSearchプロパティから取得できる、cursorプロパティから取得できます。
検索結果が0件のときには、cursorプロパティは未定義値 (undefined) となります。
プロパティ | プロパティの意味と取得例 |
---|---|
pages[ ] | 追加の検索を行うための情報。次に示す2つのプロパティを持つ
[ Object { start="0", label=1 }, Object { start="8", label=2 }, Object { start="16", label=3 }, Object { start="24", label=4 }, Object { start="32", label=5 }, Object { start="40", label=6 }, Object { start="48", label=7 }, Object { start="56", label=8 } ] |
currentPageIndex | 現在のページ番号 (現在の結果のpages[ ]のインデックス)
0 |
estimatedResultCount | 検索条件に一致する結果数の推定値
"12500000" |
moreResultsUrl | 現在の検索条件でgoogle.comで検索する場合のURL
http://www.google.com/images?source=uds&start=0&hl=ja&q=test |
以下のURLにパラメータを付加してアクセスすることで、結果を直接JSONで受け取れます。