楽天APIで商品一覧を取得する

機能説明

楽天が提供するAPIを使用して指定したキーワードで上位表示されている商品情報を取得するツールです。

※ APIは異なるプログラムやシステムが情報を共有する手段であり、今回はGASで楽天の情報を取得するために使用します。

APIの準備

はじめに楽天のAPIを使用するための準備をします。

1.アプリIDの発行

楽天にログインした状態で以下のページアクセスしてアプリIDを作成します。

ログイン - 楽天
ログイン - 楽天

以下の項目を入力して、「規約に同意して新規アプリを作成」をクリックします。

アプリ名:開発するアプリ名やサイト名を入力します。

アプリURL:開発するアプリURLやサイトURLを入力します。

アプリケーションタイプ:スプレッドシートでGASで使用する場合は「Webアプリケーション」を選択します。

許可されたIPアドレス:GASの「script.google.com」を入力します。

データ利用目的:「自身の運営するブログにおいて、楽天商品検索APIを用いて最新の価格や商品情報を取得し、読者に正確な商品紹介(アフィリエイトリンクの掲載)を行うために利用します。」等

予想QPS:1秒間に最大で何回APIを叩くかという数値を入力します。今回は例に合わせて「5」を入力します。

APIアクセススコープ:必要なスコープを選択します。今回は「楽天市場API」を選択します。

入力が完了したら、画像認証をして「規約に同意して」をクリックします。

以下のように作成したアプリIDの一覧が表示されるので、以下の3つをコピーしておいてください。

・アクセスキー
・アプリケーションID
・アフィリエイトID

お疲れ様でした。以上で楽天APIの設定は完了です。

コード全体

スプレッドシートのエディタに下記コードを貼り付け、”XXXXXXXXXXXXX”(アクセスキー)、”YYYYYYYYYYYYY”(アプリケーションID)、”ZZZZZZZZZZZZZ”(アフィリエイトID)を上記で取得した各IDに書き換えて、実際の動作を確認してください。

◆コード

function getRakuten() {

  // 1. アクセスキー
  const accessKey = "XXXXXXXXXXXXX"; 

  // 2. アプリケーションID
  const applicationId = "YYYYYYYYYYYYY"; 

  // 3. アフィリエイトID 
  const affiliateId = "ZZZZZZZZZZZZZ"; 
  
  // 4. 検索キーワード
  const keyword = '掃除機';

  // 5. 取得件数 (1〜30件)
  const hits = 3;

  // 6. 商品検索用ベースURL(2026年最新版)
  const baseUrl = "https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20260401";

  // 7. パラメータの組み立て
  const params = [
    "format=json",
    "keyword=" + encodeURIComponent(keyword),
    "genreId=0",
    "hits=" + hits,
    "applicationId=" + applicationId,
    "accessKey=" + accessKey,
    "affiliateId=" + affiliateId
  ].join("&");

  const url = baseUrl + "?" + params;

  // 8. 認証用オプション(RefererとOriginの設定が必須)
  const options = {
    "method": "get",
    "headers": {
      "Referer": "https://script.google.com",
      "Origin": "https://script.google.com"
    },
    "muteHttpExceptions": true
  };

  // 9. 結果取得
  const response = UrlFetchApp.fetch(url, options);
  const res = response.getContentText();

  // 10. JSONオブジェクトに変換
  const responseJson = JSON.parse(res);

  // 11. 商品情報の書き込み
  if (responseJson.Items && responseJson.Items.length > 0) {
    for (let i = 0; i < responseJson.Items.length; i++) {
      let item = responseJson.Items[i].Item;
 // console.log(item);
      console.log("商品名:" + item.itemName);
      console.log('商品URL:' + item.itemUrl);
    }
  }
}

■出力結果

コード解説

1.

const accessKey = "XXXXXXXXXXXXX";

accessKey 変数に、楽天デベロッパーポータルで取得した「アクセスキー」を代入します。2026年のアップデートにより、従来のIDに加えこのキーが必須となりました。

2.

const applicationId = "YYYYYYYYYYYYY";

applicationId 変数に、アプリケーションID(UUID形式)を代入します。

3.

const affiliateId = "ZZZZZZZZZZZZZ";

affiliateId 変数に、アフィリエイトID を代入します。

4.

const keyword = '掃除機';

keyword 変数に、検索したいキーワードを代入します。

5.

const hits = 3;

hits 変数に、検索結果の取得件数(最大30件)を代入します。ここを書き換えるだけで、一度に取得するデータ量を簡単に変更できます。

6.

const baseUrl = "https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20260401";

baseUrl 変数に、最新の商品検索用URLを指定します。従来の app.rakuten.co.jp から openapi.rakuten.co.jp に変更されています。

このURLの詳細や利用方法については、「楽天APIのテスト機能について」を参照してください。

7.

const params = [...].join("&");

APIに送る検索条件(パラメータ)を連結します。キーワードは encodeURIComponent() を使ってURLに適した形式に変換しています。

8.

const options = {
  "headers": {
    "Referer": "https://script.google.com",
    "Origin": "https://script.google.com"
  }
};

GASからリクエストを送る際、楽天側で設定した「許可されたWebサイト」と一致させるために、ヘッダーに RefererOrigin を指定します。これがないと403エラーが発生します。

9.

const response = UrlFetchApp.fetch(url, options);

UrlFetchApp.fetch() 関数を使用して、APIから情報を取得します。取得した内容は res 変数に格納されます。

10.

let responseJson = JSON.parse(res);

JSON.parse() 関数を使用して、取得した文字列をプログラムで扱いやすい JSON 形式に変換します。

11.

for (let i = 0; i < responseJson.Items.length; i++) {
  let item = responseJson.Items[i].Item;

 // console.log(item);
  console.log("商品名:" + item.itemName);
  console.log('商品URL:' + item.itemUrl);
}

変換されたデータから、商品名と商品URLを抽出して表示しています。

responseJson 変数に格納された JSON データの items 配列から、商品名と商品URLを抽出して、その内容を表示しています。

このJSONデータの構造がわかりにくい場合は、繰り返し処理内の「// console.log(item);」のコメントを外して実際にその中身を確認するとわかりやすいと思います。

■console.log(item);の結果

以上の解説を踏まえて、コード全体の動作を説明すると、以下のようになります。
最初に、最新の認証に必要なアクセスキーやID、検索条件を定義します。次に、2026年版のエンドポイントに合わせてURLとパラメータを組み立て、GAS専用のヘッダー情報を付与してAPIを呼び出します。最後に、返ってきたデータをJSONとして解析し、商品情報を1つずつ抽出して出力します。

カスタマイズ

1.
スプレッドシートのセルの「A1」にキーワードを記載して、記載されているのキーワードの検索結果を取得するプログラムに変更してください。

2.
取得する結果が3件となっていますが、これを10件取得できるように変更してください。

3.
商品名と商品URLの他に「shopName」も取得するように変更してください。

4.
結果をスプレッドシートに出力するようにしてください。

タイトルとURLをコピーしました