最初に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で受け取れます。