調べることを調べる(5) -- 書籍リスト作成の効率化
引き続き網羅分類法を実施。
次の手順3では紀伊國屋書店ウェブストアから地引網的に書籍を探して調査対象の文献をリスト化する。
しかし各種文献の情報をコピペするのが大変なので、Googleスプレッドシート +google Apps Script + OpenBD APIを利用して効率的に書籍情報をリスト化できるようにした。
javascript何年ぶりだ…ものすごい疲れた。
google Apps Scriptソース
function myFunction() { //ISBNコードがある行の先頭 var targetCell = "E2" //現在のシート選択 var range= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(targetCell); //isbn行を順に探索し、空行になるまで続行する //暴走抑止のため最大1000行 for(var i =0; i<1000;i++){ var isbncode = String(range.offset(i,0).getValue()); //空行で終了 if(isbncode == ""){ Logger.log("end"); break; } //isbn桁数チェック // 有効桁数: ハイフンあり14桁 / ハイフンなし13桁 / 10桁 var isbnLen = isbncode.length; if(isbnLen != 14 && isbnLen != 13 && isbnLen != 10){ Logger.log("non isbn"); range.offset(i,1).setValue("ISBN CODE Error(length?)"); continue; } //ハイフンを削除 isbncode = isbncode.replace( /-/ ,""); //isbn使用文字チェック 数字以外は許可しない var isbnJudge = isbncode.search( /^[0-9]+$/ ); //Logger.log("judge:" + isbnJudge); if( isbnJudge == -1){ Logger.log("non isbn"); range.offset(i,1).setValue("ISBN CODE Error(value?)"); continue; } // OpenBD APIに問い合わせ var response = UrlFetchApp.fetch("https://api.openbd.jp/v1/get?isbn=" + isbncode); // APIの結果をパース var resultJson = JSON.parse(response.getContentText("UTF-8")); //todo 結果が異常の時どうなるか分からない if(resultJson != null){ //title書き込み range.offset(i,1).setValue(resultJson[0].summary.title); //author書き込み range.offset(i,2).setValue(resultJson[0].summary.author); //pubdate書き込み range.offset(i,3).setValue(resultJson[0].summary.pubdate); //publisher書き込み range.offset(i,4).setValue(resultJson[0].summary.publisher); //cover書き込み //利用しないので無効化 //range.offset(i,5).setValue(resultJson[0].summary.cover); } else{ //異常時 range.offset(i,1).setValue("OpenBD API Error"); } } Logger.log("1000 data end"); }
コード参考
初心者のためのGoogle Apps Scriptプログラミング入門