モテる人は収納上手? 整理された部屋にお呼ばれすると、ときめく人が続出!
【今週の住活トピック】 「『理想の物件』に関するアンケート調査」を発表/日本ワークス 異性の部屋でときめいたり、がっかりしたポイントは? 調査結果は、意外とシンプルだった。 「異性の部屋」に入って、「ときめいたポイント」...
https://suumo.jp/journal/2019/10/23/167897/
新年明けましておめでとうございます。米本です。
本年もよろしくお願いします。
2023年下期の目標設定として開始したGoogleAppScript検証も早くも4回目を迎えました。
本投稿を含め更新予定はあと2回。有意義な情報をお届けできればと思います。
過去の投稿はこちらからどうぞ。
第1回:はじめに編はこちら
第2回:webスクレイピング編はこちら
第3回:chatwork連携編はこちら
今回はGoogleBooksAPIを用いて、ISBN番号から書籍情報を取得する書籍管理台帳を作成しようと思います。
まずはじめにISBN番号について。
書籍の裏表紙や奥付ページに「ISBN978-4-・・・」から始まる文字列が印刷されていますが、これが「ISBNコード」「日本図書コード」です。
ISBN(国際標準図書番号:International Standard Book Number)は、固有の書籍出版物を発行形態別、1書名ごとに識別するユニークなコードとして、今では200の国と地域(2022.4現在)で発行される書籍に表示されています。
書誌情報(どこの国の、何という名称の出版者が発行する、何という書名の書籍か)を特定して書籍の取引や図書目録の編纂に活用されています。
日本図書コード管理センターHPより引用
書籍情報管理のため、一意の数字が付与されているイメージですね。
次に、GoogleBooksAPIについては文字どおり、Googleの提供しているAPIで、
これを用いることで検索や書籍情報を取得することが出来ます。
早速コーディング。
function setBookInfo(){
let sheet = SpreadsheetApp.getActiveSheet(); // 開いているシートのオブジェクトを取得
let insertRow = sheet.getActiveCell().getRow(); // 選択している行のオブジェクトを取得
let isbn = sheet.getActiveCell().getValue(); // 選択しているセルの値を取得し、変数isbnに代入
Logger.log(sheet);
Logger.log(insertRow);
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列目に発行日を挿入
}
function onEdit(e){
// 編集カラムが1列目であればsetBookInfo関数を呼び出す
if(e.range.getColumn() == 1) {
setBookInfo();
}
}
今回はISBN番号1列目に設定し、1列目が更新されたら関数を呼び出すようにしています。
上記を用いて以下のような形式としました。
A列のISBN番号を入力すると、サムネイル/タイトル/URL/著者/発行日が自動で入力されます。
※カテゴリについては手動入力
技術書やビジネス書の類が増えて所有書籍がきちんと把握出来ていない状態だったので、
棚卸しと合わせて更新することで、現状を整理することが出来ました。
以降は書籍追加時にはスプレッドシートも更新することで、常に最新の状態を維持しようと思います😏
いかがでしたでしょうか。
今回は個人所有の書籍管理でしたが、これをベースに共有書籍の管理簿も作成出来るかと思います。
参考になりましたら幸いです。