【現在サポート中止しております】在庫管理ツール 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のリンク
※ アカウント作成の参考リンク
手順1. メールにてお送りしたリンクからシートのコピーを作成
ファイル→コピーを作成の選択をしてください。
手順2. 必要な情報の入力をしてください。
さて、晴れてコピーの作成ができたら、取得したebayの情報と仕入れURL、その他諸々の情報を適宜入力してください。
B8のセルに関数が入っているので、A列にURL[メルカリ・ラクマ・ヤフーショッピング・楽天市場・ヤフオク]を貼ると、自動でキーワードが入力されます。
※ URL元の商品ページに特定のキーワードがあるかで在庫の有無を判断しているので、上記のサイト以外も対応可能です。(ご自身でチェックお願いします)
※楽天市場のみ動作しておりません。
※ 改良版と画像のシートは若干異なります。
手順3. スクリプトの実行を許可する
必要な情報の入力が終わったら、在庫チェックを開始をクリックしてください。
初めてスクリプトを実行する場合は、ご自身のGoogleアカウントからアクセスを許可する必要がございます。
下の画像の手順で、在庫管理ツールの承認をしてください。
→在庫管理ツール(安全ではないページ)に移動をクリック
手順4. 在庫チェックを開始
これで、在庫管理ツールの設定が終了しました。お疲れ様でした😔
それでは、在庫チェックを開始してみましょう!
※仕入先のサーバーに負担をかけないように、1秒の間隔をあけてます。
改良前の在庫管理ツールとの違い
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 '';
}
}
この記事が気に入ったらサポートをしてみませんか?