Keepa APIのProduct Finderで条件にあったAmazonの商品を検索する方法(GAS ver.)


Keepa本家の解説ページ https://keepa.com/#!discuss/t/product-finder/5473

初めに

GETだと文字数が足りず、どうしてもPOSTでリクエストしたくて試行錯誤したのでうまくいったコードを載せておきます。

サンプルコード

keepa_product_finder_sample.gas.js
  const key = 'APIキーを入力してください';
  const queryJSON = {
    "perPage": 100, //最低50 この数値分検索結果を取得します
    "page": 0, //ページを指定します 例えばperpageが100の時、page=0なら検索結果の1~100番目が、page=1なら101~200番目の結果が返ってきます
    "productType" : 0,
    "rootCategory" : "2127209051", //ルートカテゴリで絞りたい場合は指定します 複数のルートカテゴリを同時に指定することはできません
    "title" : "ノートパソコン -Apple",//タイトルをキーワード検索します -だけでもOKです めちゃくちゃ長いキーワードを指定してもPOSTならいけます

    "avg90_NEW_gte" : 30000, //直近90日の新品価格の平均が30,000円以上
    "current_SALES_gte": 1000, //現在のランキングが1,000位以上
    "current_SALES_lte": 20000, //現在のランキングが20,000位以下
    "current_LISTPRICE_gte": 30000, //リスト価格(コンディションに関わらず全ての出品)が30,000円以下の商品を弾けます → 結果に30,000円以下の商品が結構含まれてて原因不明です…
    "isPrimeExclusive" : false //Primeでは無い商品も検索されますが、通常出荷とFBA出荷の両方の出品がある商品がマッチするのであって、FBA出品が0な商品だけで絞れるという訳では無いです
  };

  const request =  UrlFetchApp.fetch('https://api.keepa.com/query?domain=5&key=' + key,{
    'method' : 'post',
    'headers' : { 'Connection' : 'keep-alive' },
    'payload' : { 'selection' : JSON.stringify(queryJSON)}, //POSTするときはselectionキーにqueryJSONをString化して設定します
  });

  const response = JSON.parse(request.getContentText());
  const asinList = response.asinList; //条件にあったASINの配列
  Logger.log('この条件にマッチするASINの合計数: ' + response.totalResults);//マッチする商品数がperPageより多い場合、asinList.length = perPage ですが、totalResultsはそれ以上になります