SANANEBLOG
GAS PR

ジャンルから楽天の商品情報をランキング形式で一括取得するツールの作成方法【GAS】

記事内に商品プロモーションを含む場合があります

はじめに

日々の業務やアフィリエイト活動で楽天市場の商品ランキング情報を定期的にチェックしている方、手動でのデータ収集に時間を取られていませんか?

今回の記事では、楽天市場のランキング情報を効率的に取得するためのツールを紹介します。

こんなことができます
  • 時短: 手動でのデータ収集や整理の手間を軽減させます
  • 柔軟性: 希望するジャンルや出力件数、ソート方法を簡単に指定可能
  • 最新データ: 定期的に自動更新を行えば常に最新のランキング情報を取得可能

動作イメージ

今回は、楽天APIとGoogle Apps Script (GAS) を使って、指定したジャンルIDに基づく商品情報を取得し、Google スプレッドシートに記載します。

ジャンルIDの取得方法は以下の記事にツールの作成方法を記載しております。

【初心者向け】楽天市場ジャンルID簡易検索ツールの作成方法【GAS】 はじめに 今回の記事ではGAS(Google Apps Script)と楽天APIを使用して楽天市場のジャンルIDを簡単にスプレ...

ツールの見た目は以下のようになっています。

事前に各セルに以下を入力しておきます。

  • A2セルに表示したいジャンルのIDを入力
  • B2セルに出力したい件数
  • C2セルにソート方法

今回は例として「ジャンルID」にNintendo SwitchのソフトジャンルIDである[566404]を、ソート方法はレビュー数の多い順[-reviewCount]で[実行]ボタンをクリックします。

レビュー件数の多い順に楽天市場の商品の情報が出力されます。このとき、商品タイトルと同時に以下も取得しています。

  • 商品名
  • 商品価格
  • 商品のURL
  • ショップ名
  • ショップURL
  • ショップのURL
  • レビュー件数
  • レビューの平均点数

作成方法

事前準備

今回のツールの作成には事前に以下が必要となります。

  1. Google アカウント
  2. 楽天APIのアプリID

楽天APIの取得方法については下記URLを参照ください。途中で記入する「アプリ名」や「アプリURL」は任意のもので構いません。

取得が完了したら、[アプリID]を控えておいてください。

作成方法

スプレッドシートの新規作成

まず、Google スプレッドシートにアクセスします。

アクセスしたら、[新しいスプレッドシートを作成]> [空白]をクリックして新しいスプレッドシートを作成します。

また、以下はこの後の作業で使用するため、パラメータを控えておいてください

スプレッドシートのID

スプレッドシートの上部アドレスバーより、IDを控えておく。

コピーする場所は下記の「ここの値をコピーして控えておく」の箇所。

https://docs.google.com/spreadsheets/d/ここの値をコピーして控えておく/edit#gid=0

GASの設定

スプレッドシート上部バーの[拡張機能]>[Apps Script]をクリックします。新しいタブが開きGASが表示されます。

ここから、GAS上でコードを作成します。もともと記載してある以下コードは削除します。

function myFunction() {

}

削除したら、以下コードをコピーしてそのまま貼り付けてくだい。

このとき、2行目と3行目の” “で囲われた部分を以下のように書き換えてください。

YOUR_RAKUTEN_APPLICATION_ID:楽天APIのアプリID

YOUR_SPREADSHEET_ID:控えておいたスプレッドシートのID

// アプリケーションID、スプレッドシートID、ジャンルIDをここに設定
var RAKUTEN_APPLICATION_ID = 'YOUR_RAKUTEN_APPLICATION_ID';
var SPREADSHEET_ID = 'YOUR_SPREADSHEET_ID';


function fetchRakutenRanking(genreId, outputCount, sortOrder) { 
  Logger.log('Input genreId: ' + genreId);
  // 楽天APIのエンドポイントURL
  var url = 'https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601';


  var params = {
      'format': 'json',
      'genreId': genreId.toString(),
      'applicationId': RAKUTEN_APPLICATION_ID
  };
  Logger.log('Converted genreId: ' + params['genreId']);
  // 許容されるソートオプションのみをAPIに渡す
  var allowedSorts = ["+affiliateRate", "-affiliateRate", "+reviewCount", "-reviewCount", "+reviewAverage", "-reviewAverage", "+itemPrice", "-itemPrice"];
  if (allowedSorts.includes(sortOrder)) {
      params['sort'] = sortOrder;
  }

  var options = {
      'method' : 'get',
      'payload' : params
  };

  var response = UrlFetchApp.fetch(url, options);
  var json = JSON.parse(response.getContentText());
  // レスポンスデータからランキング情報を取得
  var items = json.Items;
  var rankingData = [];
  for (var i = 0; i < items.length && i < outputCount; i++) {
    var item = items[i].Item;
    rankingData.push([
      item.itemName, 
      item.itemPrice, 
      item.itemUrl, 
      item.shopName, 
      item.shopUrl, 
      item.reviewCount, 
      item.reviewAverage
    ]);
  }
  
  return rankingData;
}

function writeRankingToSheet() {
    var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getActiveSheet();
    
    var genreId = parseInt(sheet.getRange("A2").getValue(), 10);
    var outputCount = sheet.getRange("B2").getValue();
    var sortOrder = sheet.getRange("C2").getValue(); // ソートオーダーを取得

    var data = fetchRakutenRanking(genreId, outputCount, sortOrder); // sortOrderを追加

    sheet.getRange(5, 1, sheet.getMaxRows() - 4, sheet.getMaxColumns()).clear();

    // セルに文字列を設定
    sheet.getRange("A1").setValue("ジャンルID");
    sheet.getRange("B1").setValue("出力件数");
    sheet.getRange("C1").setValue("ソート方法");

    sheet.getRange(4, 1, 1, 7).setValues([["商品名", "商品価格", "商品のURL", "ショップ名", "ショップのURL", "レビュー件数", "レビューの平均点数"]]);
    for (var i = 0; i < data.length; i++) {
        sheet.getRange(i + 5, 1, 1, 7).setValues([data[i]]);
    }
}

アプリIDとスプレッドシートIDの記入が完了したら、[Ctrl+S]かApps Script 上部バーの[プロジェクトを保存]をクリックして保存します。

GASの実行

Apps Script 上部バーの[▶実行]をクリックします。最初のスクリプトの実行には権限が必要となるため、[承認が必要です]というモーダルが表示されたら、

[権限を確認]>[表示されているGoogleアカウント]>[詳細]>[無題のプロジェクト(安全ではないページ)に移動]>[許可]まで移動します。クリック後GASが実行されます。

この時点ではスプレッドシートにジャンルIDや出力件数を入力していないため、実行エラーが発生しますが問題ありません。

ボタンの作成

再度スプレッドシートのタブに戻ります。

Google スプレッドシートを開き、上部メニューの [挿入] > [図形描画] をクリックします。

好きな図形を選択し、スプレッドシート上の任意の位置に配置します。この図形がボタンとなります。

ボタン(図形)を右上の…をクリックし、[スクリプトを割り当て] をクリックします。

開いたダイアログボックスに 以下を入力し[確定]をクリックします。

writeRankingToSheet

以降は作成されたボタンをクリックすることで、簡単にプログラムを実行することができます。

以上で作成は完了となります。続いてツールの利用方法となります。

ツールの利用方法

スプレッドシートでA2セルに「ジャンルID」を、B2セルに「出力件数」を入力します。続いて、ソート方法は以下を参照してください。

【初心者向け】楽天市場ジャンルID簡易検索ツールの作成方法【GAS】 はじめに 今回の記事ではGAS(Google Apps Script)と楽天APIを使用して楽天市場のジャンルIDを簡単にスプレ...
  • +affiliateRate: アフィリエイト料率の低い順
  • -affiliateRate: アフィリエイト料率の高い順
  • +reviewCount: レビュー件数の少ない順
  • -reviewCount: レビュー件数の多い順
  • +reviewAverage: レビュー平均評価の低い順
  • -reviewAverage: レビュー平均評価の高い順
  • +itemPrice: 価格が安い順
  • -itemPrice: 価格が高い順

この時の注意点として、スプレッドシートに直接[+affiliateRate]と入力すると[#NAME]と表示されエラーが発生します。

この回避策として、+affiliateRateの先頭にシングルクォート「’」を入力してください。

※↑の「」内のシングルクォートはコピペせず、キーボードから直接入力してください。

また上記画像のように、入力後C2セルに入力したシングルクォートが非表示になっていることを確認してください。

いちいち入力するのは面倒なため、C2セルをクリックして上部バーから[データ]>[データの入力規則]をクリックすることでプルダウンが作成できます。

この時もそれぞれのソート方法の先頭にシングルクォートを入れるのを忘れずに行いましょう。

最後に、[実行]ボタンを押すと自動で商品情報が表示されるはずです。

SANANE

ソート方法は「+」が昇順、「-」が降順と覚えるとスムーズです。

注意点

楽天APIの呼び出し回数には上限が定められているため、実行回数が多い場合は途中で動作が停止する場合があります。

GASおすすめ本

GASをもっと勉強したい!ほかにも自分で何か作成したい!という方には以下がおすすめです。仕事で使えるアイデアなども学ぶことができます。