ニート生活中に作った在庫管理ツールを無料で配布します[ebay輸出]
こんにちは、ユウタです。
10月から転職活動始まり、無事に第一志望である会社に内定を頂くことができ、絶賛出社までのニート生活をしております。あまりにも暇でやることがないので、Googleスプレッドシート上で動く在庫管理ツールを作りました。
Googleとebay Develper Programのアカウントさえあれば、誰でも使えます。
用意するもの
・Googleのアカウント
[ ebay Develper Programの登録が必須 ]
・App ID (Client ID)
・Dev ID
・Cert ID (Client Secret)
・User Token(Production環境)
App ID~を利用するためには、ebay Develper Programのアカウントを作成する必要があります。アカウントを作成する方法はこちらの記事が詳しいので、ぜひ参考にしてみてください。
スプレッドシートのダウンロード方法
手順1. 下記のリンクからシートのコピーを作成
https://docs.google.com/spreadsheets/d/1jPSHhH9etnvVeZKVjUUO21_f5ZZUJMu0x-Hvc8qoRIU/edit?usp=sharing
ファイルからコピーを作成の選択をしてください。
手順2. 必要な情報の入力をしてください。
さて、晴れてコピーの作成ができたら、取得したebayの情報と仕入れURL、その他諸々の情報を適宜入力してください。
B8のセルに関数が入っているので、A列にURL[メルカリ・ラクマ・ヤフーショッピング・楽天市場・ヤフオク]を貼ると、自動でキーワードが入力されます。
※ URL元の商品ページに特定のキーワードがあるかで在庫の有無を判断しているので、上記のサイト以外も対応可能です。(ご自身でチェックお願いします)
※楽天市場のみ動作しておりません。
手順3. スクリプトの実行を許可する
必要な情報の入力が終わったら、在庫チェックを開始をクリックしてください。
初めてスクリプトを実行する場合は、ご自身のGoogleアカウントからアクセスを許可する必要がございます。
下の画像の手順で、在庫管理ツールの承認をしてください。
→在庫管理ツール(安全ではないページ)に移動をクリック
手順4. 在庫チェックを開始
これで、在庫管理ツールの設定が終了しました。お疲れ様でした😔
それでは、在庫チェックを開始してみましょう!
※仕入先のサーバーに負担をかけないように、1秒の間隔をあけてます。
実行後は、在庫チェック列に○✗で仕入先の在庫の有無が表示され、状況の列にebayの現在のEND情報が表示されます。
※ END情報の例
・App IDなどのIDやトークンが正しくない場合
→入力データが無効
・ItemIDの商品が削除されている場合や違うセラーの商品だった場合
→ ItemIDが無効
・既にebay上で、出品を取り下げている場合
→ END済
・商品の取り下げが成功した場合
→ END成功!
GASのソースコード(メンテナンス用)
ツールを使用して、アクセス制限などの不具合が起きましたら、クラウドワークス等でエンジニアを探して、各自でメンテナンスをお願いします。
ツール開発を0→1でお願いするとツール費用に5万〜くらいかかりますが、既存コードのメンテナンスなら5000円〜1万円くらいで依頼できると思いますので、ぜひ参考にしてください😔
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();
result = check_url(url,keyword);
if(result){
// 想定通りならH列に◯を
sheet.getRange(i,3).setValue('○');
} 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': 'EndItem',
'X-EBAY-API-SITEID': '0',
'Content-Type': 'text/xml'}
var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><EndItemRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"><RequesterCredentials><eBayAuthToken>" + Token + "</eBayAuthToken></RequesterCredentials><EndingReason>NotAvailable</EndingReason><ItemID>" + ItemID + "</ItemID></EndItemRequest>"
var options = {
'method' : 'post',
'headers' : headers,
'payload' : xml
};
response = UrlFetchApp.fetch(endpoint,options)
var responseBody = response.getContentText();
if (responseBody.search("invalid") !== -1) {
sheet.getRange(i,5).setValue("入力データが無効");
}
else if(responseBody.search("closed") !== -1){
sheet.getRange(i,5).setValue("END済");
}
else if(responseBody.search("Item cannot be accessed") !== -1){
sheet.getRange(i,5).setValue("ItemIDが無効");
}
else{
sheet.getRange(i,5).setValue("END成功!");
}
} catch (e){
sheet.getRange(i,5).setValue("");
}
}
}
}
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(1000);
var response = UrlFetchApp.fetch(url).getContentText();
return response
}
catch(e){
return '';
}
}
設定次第で、一日の決まった時間に在庫管理ツールを動かすことができます。興味がありましたら、リンクを参考にアレンジしてみてください。
さいごに
当ツールは、ただ国内の在庫チェックをして、ただ出品を自動で取り下げてくれるだけの機能です。そのため、ヤフオクなどの再出品の商品には対応しておりませんので、お気をつけください😔
また、商品数が莫大になってくると在庫元のURLのサーバーに負荷がかかります。
当ツールを使って、アクセス制限などのいかなるトラブル・損失・損害が起きましても、一切責任を負いませんのでよろしくお願いします!
※サーバーに負荷がかかりづらい設計には心がけております。
11月から転職先にて、仕事が始まりますので、当ツールの不具合や質問などに対応することができません。
このマニュアル通りにセルの配置や設定を変えなければ、問題なく利用できると思いますので、なるべくご質問はお控えくださいませ😔
追記
6分以上の処理をするとタイムアウトになりますので、商品数が多い場合は、分割して処理をお願いいたします🤲
※楽天市場のみ動作しておりません。
改良版はこちら
この記事が気に入ったらサポートをしてみませんか?