LANG SELRCT

コードを書く場所についてはこちら

2019年3月3日日曜日

Google Books APIで検索結果を取得してみる


Google Apps ScriptでGoogle Books APIの検索結果を取得したくて調べました。

URLの例(ブラウザで開くとJSONが返ってくる)
https://www.googleapis.com/books/v1/volumes?q=intitle:API&country=JP

コード.gs内では、&country=JPを付けないとエラーになる。



コード.gs
function getBooksWithParams() {
  var url = 'https://www.googleapis.com/books/v1/volumes?q=intitle:API&country=JP&langRestrict=ja&maxResults=40&orderBy=newest';
  var json = UrlFetchApp.fetch(url);
  Logger.log(json)
}

意訳
この機能がやること
Google Books APIで検索する
結果を取得して
ログに出す



パラメータについて
intitle:API 「タイトル」
&country=JP これを設定しないとエラーが出る JP以外にはUSなど
&langRestrict=ja 「日本語」
&maxResults=40 「結果の数」0〜40
&orderBy=newest 「並び替え」newest or relevance

その他のパラメータ
https://developers.google.com/books/docs/v1/using#api_params


補足1

&country=JPを付けずにUrlFetchApp.fetch(url)に渡すとこのようなエラーが出た。
https://www.googleapis.com/books/v1/volumes?q=API のリクエストに失敗しました(エラー: 403)。サーバー応答の一部: { "error": { "errors": [ { "domain": "global", "reason": "unknownLocation", "message": "Cannot determine user location for geogra...(

これをreasonの部分を切り取ってググってみると
"reason": "unknownLocation", "message": "Cannot determine user location for

それらしきproductforumsのリンクが一番上にある(一発で見つかるの助かる)
https://productforums.google.com/forum/#!topic/books-api/cK8VJUhRl9w
そのリンクを開いてみると
&country=
を追加してやるとうまくいくという回答を参考にしました。


補足2
langRestrictのlanguage codeがどんなコードなのか記載がないので調べてみると、wikipediaにISO 639-1コード一覧というのを見つけた。
日本語はja
英語ならen