Amatopia API機能マニュアル

  • HOME
  • Amatopia API機能マニュアル

この記事ではAmatopia APIの使い方について解説しています。

画面の説明

1.対象サイト 

対象サイトを選択することで表示サイトの絞り込みが可能です。

2.Amazonリスト取得API用URLコピー

Amazonリスト取得API用URLのボタンを押すとURLがクリップボードへURLがコピーされます。一見何も起こらないと感じるかもしれませんがCtrl+Vや右クリック→貼り付けでアドレスバーに貼ることで画面のような表示になります。説明の為に

3.その他サイトリスト取得API用URLコピー

上記と同様です。

4.データ取得対象ASIN登録

5.データ取得対象ASINファイルアップロード

データ取得用のAmazonのASINを一括で登録可能です。

6.データ取得対象URL登録

対象サイトの商品ページのURLを入力し取得時間の間隔を設定してください。

URLはキーワードのクエリ文が長すぎると上手くいかないことがあります。その場合は不要な部分を除外して利用してください。

7.データ取得対象URLファイルアップロード

データ取得用のAmazon以外のサイトURLを一括で登録可能です。

8.APIキーの発行

Googleスプレッドシートなどの外部サイトで利用するためのAPIキーです。

一度発行すると6ヶ月有効です。Googleスプレッドシートのサンプルコードについては後ほど解説します。

9.仕入れ用アカウント設定

AmazonのSP-API認証を行います。

詳しくはSP-API認証のページをご覧ください。

Amazonからデータを取得するにはAmazonのSP-APIの登録が必要です。(将来的にKeepa APIでの取得も可能になる予定です。)

10.データ取得稼働状況

各サイトからのデータ取得可能状況を表示します。

各サイトはサイト構成の変更により取得できなくなることがあります。通常は2週間以内に対応可能ですがサイトの構成により対応難度が異なるため1ヶ月以上かかるケースもあります。

Googleスプレッドシート側の設定について

以下にGoogleスプレッドシート上でAmatopia APIを利用するための流れを示します。

①事前に取得先URLをAmatopiaの商品価格取得API設定の画面で取得対象として登録してください。 一覧右上のメニューの「データ取得対象URL登録」を選択します。

②開いたダイアログでURLを入力し取得間隔を選択して登録します。

③次にGoogleスプレッドシートを開きます。(Googleアカウントを取得していることが前提条件となっています。)

Googleアカウントの作成方法はこちら

1.    新しいスプレッドシートを作成
2.    スプレッドシートのツールバー「拡張機能」→「App Script」を選択する
(Googleスプレッドシートのバージョンが古い場合は、「拡張機能」の項目が存在しないため、ツールバーの「ツール」→「スクリプトエディタ」を選択すると、App Scriptを開くことができます。)

「App Script」を選択すると、新しいウィンドウが開きます。ここがGoogle Apps Scriptの開発環境になります。ブラウザに「無題のプロジェクト」のタブが新規追加されます。
初めて開いた場合は、以下のようなコードが自動的に生成されます。

④すでに入力されているfunction myfunction(){}の部分は削除して以下のコードを貼り付けます。

function myFunction() {
  getAmazonPrice()
  getOtherSitePrice()
}

function getAmazonPrice() {
  const url = `https://amatopia.net/amazon/dataCollectApi/listDataCollectAmazonResult?`;
  const length = 100;

  var startIndex = 0;

  const scriptProperties = PropertiesService.getScriptProperties();

  // スクリプト・プロパティに設定したAPI Keyをリクエストヘッダに設定
  const requestHeaders = {
      'Access-Token': scriptProperties.getProperty('ApiKey')
  }
  const requestOptions = {
      'method' : 'get',
      'headers' : requestHeaders
  }

  //  スプレッドシートの読み込み
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  //  シートの選択
  const sheet = spreadsheet.getSheetByName('Amazon価格')

  sheet.appendRow([
    '国',
    'ASIN',
    '価格',
    '通貨',
    '送料',
    '送料通貨',
    '在庫',
    'データ取得日時',
    'エラー有無'
  ])

  var resultsCount = -1
  // レスポンスの取得件数がリクエストに設定する取得件数より少なくなるまで繰り返し
  do {
    // API実行
    const res = UrlFetchApp.fetch(url + "start=" + startIndex + "&length=" + length, requestOptions);
    const response = JSON.parse(res)
    const results = response["results"]

    resultsCount = response["count"]

    // 取得結果のレコードをスプレッドシートに書き出し
    for (index = 0; index < results.length; index++) {
      var result = results[index];
      sheet.appendRow([
        result["country_code"],
        result["asin"],
        result["price"],
        result["currency"],
        result["ship_price"],
        result["ship_currency"],
        result["stock"],
        result["scraping_datetime"],
        result["error"]
      ])
    }
    // 次のAPI実行時の取得開始位置を設定
    startIndex = startIndex + resultsCount
  } while (resultsCount >= length)
}


function getOtherSitePrice() {
  const url = `https://amatopia.net/amazon/dataCollectApi/listDataCollectSiteResult?`;
  const length = 100;

  var startIndex = 0;

  const scriptProperties = PropertiesService.getScriptProperties();

  // スクリプト・プロパティに設定したAPI Keyをリクエストヘッダに設定
  const requestHeaders = {
      'Access-Token': scriptProperties.getProperty('ApiKey')
  }
  const requestOptions = {
      'method' : 'get',
      'headers' : requestHeaders
  }

  //  スプレッドシートの読み込み
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  //  シートの選択
  const sheet = spreadsheet.getSheetByName('その他サイト価格')

  sheet.appendRow([
    'スクレイピング対象URL',
    '価格',
    '通貨',
    '送料',
    '送料通貨',
    '在庫',
    'データ取得日時',
    'エラー有無'
  ])

  var resultsCount = -1
  // レスポンスの取得件数がリクエストに設定する取得件数より少なくなるまで繰り返し
  do {
    // API実行
    const res = UrlFetchApp.fetch(url + "start=" + startIndex + "&length=" + length, requestOptions);
    const response = JSON.parse(res)
    const results = response["results"]

    resultsCount = response["count"]

    // 取得結果のレコードをスプレッドシートに書き出し
    for (index = 0; index < results.length; index++) {
      var result = results[index];
      sheet.appendRow([
        result["scraping_url"],
        result["price"],
        result["currency"],
        result["ship_price"],
        result["ship_currency"],
        result["stock"],
        result["scraping_datetime"],
        result["error"]
      ])
    }
    // 次のAPI実行時の取得開始位置を設定
    startIndex = startIndex + resultsCount
  } while (resultsCount >= length)
}

⑤AppScriptの実行を行います。まずはスクリプト・プロパティにAPI Keyを設定してください。
AppScriptの左メニューの「プロジェクトの設定」を選択します。

⑥「プロジェクトの設定」画面の下の方にある「スクリプト プロパティを追加」をクリックします。

⑦以下を入力して「スクリプト プロパティを保存」をクリック
プロパティ:ApiKey 値:Amatopiaの商品価格取得APIキー設定画面で発行したAPIキー

※API Keyをスクリプト自体の16行目直接書き換えて記入しないようにしてください。

⑧スプレッドシートに以下のシート名のシートを用意 Amazon価格 その他サイト価格

⑨AppScriptを実行

設定した時間毎に取得が行われます。以上にて完了です。