LoginSignup
23
27

More than 3 years have passed since last update.

GASでGoogle Books API使って書籍管理

Last updated at Posted at 2019-09-09

概要

Google Apps Scriptを用いて、Google Book APIの情報を呼び出してみました。
書籍管理用のスプレッドシートとかに使えるかも。

完成図

A列に書籍コードであるISBNを入力すると、B~G列に書籍の情報が自動挿入されるものを作ります。

スクリーンショット 2019-09-09 23.52.48.png

手順

1. スプレッドシートのスクリプトエディタを開く

メニュー > ツール > スクリプトエディタ を選択。
スクリーンショット 2019-09-09 23.56.59.png

2. スクリプトファイルにコードを記載する

function setBookInfo(){

  sheet = SpreadsheetApp.getActiveSheet(); // 開いているシートのオブジェクトを取得
  insertRow = sheet.getActiveCell().getRow(); // 選択している行のオブジェクトを取得
  isbn = sheet.getActiveCell().getValue(); // 選択しているセルの値を取得し、変数isbnに代入
  Logger.log(isbn); // isbnをログ出力

  // Google Books APIを叩いてレスポンスを取得  
  response = UrlFetchApp.fetch('https://www.googleapis.com/books/v1/volumes?q=isbn:' + isbn + '&country=JP');

  data = JSON.parse(response.getContentText()); //JSON形式のレスポンスをオブジェクトとしてパース
  bookInfo = data.items[0].volumeInfo; //本の情報を取得

 sheet.getRange(insertRow,2).setValue('=IMAGE("'+bookInfo.imageLinks.thumbnail+'")'); // 2列目にサムネイルを挿入
  sheet.getRange(insertRow,3).setValue(bookInfo.title); // 3列目にタイトルを挿入
  sheet.getRange(insertRow,4).setValue(bookInfo.canonicalVolumeLink); // 4列目にリンクを挿入
  sheet.getRange(insertRow,5).setValue(bookInfo.authors.join()); // 5列目に著者を挿入
  sheet.getRange(insertRow,6).setValue(bookInfo.publishedDate); //6列目に発行日を挿入
  sheet.getRange(insertRow,7).setValue(bookInfo.categories.join()); //7列目にカテゴリを挿入

}

function onEdit(e){
  // 編集カラムが1列目であればsetBookInfo関数を呼び出す
  if(e.range.getColumn() == 1) {
      setBookInfo();
  }
}

3. トリガーを設定する

メニュー > 編集 > 現在のプロジェクトのトリガー を選択。
スクリーンショット 2019-09-10 0.12.44.png

トリガーを追加 をクリック。
スクリーンショット 2019-09-10 0.15.53.png

実行する関数: onEdit
イベントのソース: スプレッドシートから
イベントの種類: 編集時
を設定して保存。

これで完成です。

参考

最後に

GASは独自の関数などは探さないといけないですが、直感的でわかりやすくサクッと作れたので良かったです。
今後はISBNをカメラからバーコードで読み取って挿入できるようにしたいです。
記事に間違いや不明な点があれば遠慮なくご指摘ください。

追記
掲載ありがとうございます!
WEB開発に役に立つAPI一覧+API毎に関連するQiita記事を分類 !

23
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
27