LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Sunday, March 3, 2019

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





Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...