なんも分からないのでしらべた

なんもわからん!…ので、できる範囲で調べる。

調べることを調べる(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プログラミング入門

openBD | 書誌情報・書影を自由に