【現在サポート中止しております】在庫管理ツール sellerhacks会員限定 ebay輸出

※こちらの記事は、Sellerhacks会員様限定です。

それでは、メールにてお伝えした【改良版】在庫管理ツールの説明いたします。

用意するもの

・Googleのアカウント
[ ebay Develper Programの登録が必須 ]
・App ID (Client ID)
・Dev ID
・Cert ID (Client Secret)
・User Token(Production環境)

App ID~User Tokenを利用するためには、ebay Develper Programのアカウントを作成する必要があります。アカウントを作成する方法はこちらの記事が詳しいので、ぜひ参考にしてみてください。

※ ebay Develper Programのリンク

※ アカウント作成の参考リンク

https://www.embedded-property.net/ebay-%E9%96%8B%E7%99%BA%E8%80%85%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E5%8F%96%E5%BE%97/


手順1. メールにてお送りしたリンクからシートのコピーを作成

ファイル→コピーを作成の選択をしてください。

画像2


手順2. 必要な情報の入力をしてください。

さて、晴れてコピーの作成ができたら、取得したebayの情報と仕入れURL、その他諸々の情報を適宜入力してください。

画像1

B8のセルに関数が入っているので、A列にURL[メルカリ・ラクマ・ヤフーショッピング・楽天市場・ヤフオク]を貼ると、自動でキーワードが入力されます。
※ URL元の商品ページに特定のキーワードがあるかで在庫の有無を判断しているので、上記のサイト以外も対応可能です。(ご自身でチェックお願いします)

※楽天市場のみ動作しておりません。

画像3

※ 改良版と画像のシートは若干異なります。

手順3. スクリプトの実行を許可する

必要な情報の入力が終わったら、在庫チェックを開始をクリックしてください。
初めてスクリプトを実行する場合は、ご自身のGoogleアカウントからアクセスを許可する必要がございます。

下の画像の手順で、在庫管理ツールの承認をしてください。


画像4


→在庫管理ツール(安全ではないページ)に移動をクリック

画像6


画像7

手順4. 在庫チェックを開始

これで、在庫管理ツールの設定が終了しました。お疲れ様でした😔
それでは、在庫チェックを開始してみましょう!

※仕入先のサーバーに負担をかけないように、1秒の間隔をあけてます。

画像8

改良前の在庫管理ツールとの違い

https://note.com/yuta_ebayer/n/n1e7d8db7a498/edit?reedit=true
※ 改良前のリンク


・以前のツールでは商品をEndにする仕様でしたが、商品数を1→0にRevise
・在庫ありの仕入れURLを上書きをし、在庫チェックを開始するだけで自動で商品数を0→1にRevise

これらの改良点により、同じ商品の出品の手間を減らすことができると同時に、これまでに溜めたWatchやSoldの数をそのままの状態で出品ができるようになりました。

GASのソースコード(メンテナンス用)

以前のコードから改良点を付け加えただけなので、めちゃくちゃ汚いですが笑


function myFunction() {
 // シート情報にアクセスできるようにします
 var sheet=SpreadsheetApp.getActiveSheet();
 var APP = sheet.getRange('B2').getValue();
 var DEV =  sheet.getRange('B3').getValue();
 var CERT = sheet.getRange('B4').getValue();
 var Token = sheet.getRange('B5').getValue();
 // 最後の行数を取得します
 var rowcount = sheet.getLastRow();
 // 開始行から最終行までまわします
 
 for(var i=8; i<rowcount+1; i++){
     url = sheet.getRange(i,1).getValue();
     keyword = sheet.getRange(i,2).getValue();
     ItemID = sheet.getRange(i,4).getValue();
     Quantity = sheet.getRange(i,5).getValue();

     result = check_url(url,keyword);
     if(result){
     // 想定通りならH列に◯を
        sheet.getRange(i,3).setValue('○');
        if (Quantity==0) {
           add_one(sheet,i,ItemID,Token,DEV,CERT,APP)
        }
     } else {
     // 想定と違ったら×を
       sheet.getRange(i,3).setValue('☓');
       try {
         var endpoint = "https://api.ebay.com/ws/api.dll"
         var headers = {'X-EBAY-API-COMPATIBILITY-LEVEL': '1149',
                        'X-EBAY-API-DEV-NAME': DEV ,
                        'X-EBAY-API-APP-NAME': APP,
                        'X-EBAY-API-CERT-NAME': CERT,
                        'X-EBAY-API-CALL-NAME': 'ReviseItem',
                        'X-EBAY-API-SITEID': '0',
                        'Content-Type': 'text/xml'}
         var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ReviseItemRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"><RequesterCredentials><eBayAuthToken>" + Token + "</eBayAuthToken></RequesterCredentials><ErrorLanguage>en_US</ErrorLanguage><WarningLevel>High</WarningLevel><Item><ItemID>" + ItemID + "</ItemID><Quantity>0</Quantity></Item></ReviseItemRequest>"

         var options = {
           'method' : 'post',
           'headers' : headers,
           'payload' : xml
         };
         response = UrlFetchApp.fetch(endpoint,options)
         var responseBody = response.getContentText();
         if (responseBody.search("EndTime") !== -1) {
             sheet.getRange(i,5).setValue("0");
         } 
       //   else if(responseBody.search("") !== -1){
       //     sheet.getRange(i,5).setValue("0に変更");
       //  } 
       //  else if(responseBody.search("Item cannot be accessed") !== -1){
       //     sheet.getRange(i,5).setValue("ItemIDが無効");
       //  } 
        else{
           sheet.getRange(i,5).setValue("0");
        } 
         
       } catch (e){
         sheet.getRange(i,5).setValue("");
       }
       
     }
    }
 }

function add_one(sheet,i,ItemID,Token,DEV,CERT,APP){
       try {
         var endpoint = "https://api.ebay.com/ws/api.dll"
         var headers = {'X-EBAY-API-COMPATIBILITY-LEVEL': '1149',
                        'X-EBAY-API-DEV-NAME': DEV ,
                        'X-EBAY-API-APP-NAME': APP,
                        'X-EBAY-API-CERT-NAME': CERT,
                        'X-EBAY-API-CALL-NAME': 'ReviseItem',
                        'X-EBAY-API-SITEID': '0',
                        'Content-Type': 'text/xml'}
         var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ReviseItemRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"><RequesterCredentials><eBayAuthToken>" + Token + "</eBayAuthToken></RequesterCredentials><ErrorLanguage>en_US</ErrorLanguage><WarningLevel>High</WarningLevel><Item><ItemID>" + ItemID + "</ItemID><Quantity>1</Quantity></Item></ReviseItemRequest>"

         var options = {
           'method' : 'post',
           'headers' : headers,
           'payload' : xml
         };
         response = UrlFetchApp.fetch(endpoint,options)
         var responseBody = response.getContentText();
         sheet.getRange(i,5).setValue("1");
     } catch (e){
         Logger.log(e)
         sheet.getRange(i,5).setValue("0");
     }
    }

function check_url(url,keyword){
    html = get_html(url);
 
    if (html.match(keyword)) {
       return true;
     }
  
    else{
       return false;
      
    }
   }  

 
function get_html(url) {
   try{
      Utilities.sleep(1500);
      var response = UrlFetchApp.fetch(url).getContentText();
      return response
    }
   catch(e){
      return '';
    }
  }
   



この記事が気に入ったらサポートをしてみませんか?