2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS】JANコードからCD情報を取得してスプレットシートに書き込む

Posted at

はじめに

家にあるCDが増えてきたので一覧を作りたいと思ったものの、手入力するのは面倒だったのでJANコードからCD情報を取得してタイトルやアーティスト名などを自動でスプレットシートに書き込めるようにしました。

楽天ブックスCD検索API

CD情報を取得には楽天ブックスCD検索APIを使いました。
参照:https://webservice.rakuten.co.jp/api/bookscdsearch/

スクリプト

const APPLICATION_ID = "アプリIDを記載";
const SEARCH_URL = "https://app.rakuten.co.jp/services/api/BooksCD/Search/20170404";

function writeActiveCellCdAttribute(){
  const sheet = SpreadsheetApp.getActiveSheet(); 
  const activeRange = sheet.getActiveRange();
  
  if(!activeRange){
    return;
  }
  
  if(activeRange.getNumRows() != 1 || activeRange.getNumColumns() != 1){
    return;
  }
  
  const col = activeRange.getColumn();
  const row = activeRange.getRow();
  // JANコード列か判定
  if(col == 2 && !sheet.getRange(row, 1).getValue()){
    const jan = sheet.getRange(row, col).getValue();
    const result = getCdAttribute(jan);
    if(result){
     writeCdAttribute(sheet, row, result);
   }
  }
}

function writeCdAttribute(sheet, row, info){
  var col = 3;
  sheet.getRange(row, col++).setValue(info.title);
  sheet.getRange(row, col++).setValue(info.titleKana);
  sheet.getRange(row, col++).setValue(info.artistName);
  sheet.getRange(row, col++).setValue(info.artistNameKana);
  sheet.getRange(row, col++).setValue(info.label);
  sheet.getRange(row, col++).setValue(info.makerCode);
  sheet.getRange(row, col++).setValue(info.salesDate);
}

function getCdAttribute(jan) {
 
  const url = SEARCH_URL
      + "?" + "format" + "=" + "json"
      + "&" + "applicationId" + "=" + APPLICATION_ID
      + "&" + "jan" + "=" + jan;
 
  const response = UrlFetchApp.fetch(url).getContentText();
  const resultJson = JSON.parse(response);
  
  const item = resultJson.Items[0].Item;
  if (item) {
    const result = {
        title: item.title,
        titleKana: item.titleKana,
        artistName: item.artistName,
        artistNameKana: item.artistNameKana,
        label: item.label,
        makerCode: item.makerCode,
        salesDate: item.salesDate,
    };    
    return result;
  }
  return null;
}

トリガーの設定

スプレットシートに何かしら入力するとwriteActiveCellCdAttributeメソッドが呼ばれるように設定しています。

image.png

スプレットシート

スプレットシート .png

まとめ

スマホのカメラでバーコードを読みとる機能は精度が悪くて挫折しました。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?