Switch Science 的网页已更新,因此难以从产品列表中查看库存数量。作为寄售商,我想检查我的产品库存,但这变得困难。
因此,在学习 GAS (Google Apps Script) 时,我尝试获取写在 Google 电子表格中的产品编号 (SKU) 的库存编号并更新库存编号表。策略很简单:用HTML获取指定SKU的产品页面(可以从SKU机械地创建URL),剪掉里面写的库存数量,记录下来。
首先,使用您要在 B 列中查找的 SKU 创建一个 Google 电子表格。为便于理解,将产品名称写在 A 栏中。
对于这个表,让我们使用 GAS 来获取 B 列中每个 SKU 的库存数量,并将其输入到 C 列中。
首先,在此表单上选择“扩展”→“应用程序脚本”以打开 Google Apps 脚本的编辑屏幕。您可以将脚本名称放在左上角,因此最好将其命名为“SS Inventory Check”(SS = Switch Science)。
脚本是用code.gs写的,下面的脚本就写在那里。语法基本类似于 JavaScript。
function checkStock(){
start = 2; // 開始列数
end = 100; // 終了列数(空欄は在庫数取得をスキップするので大きめの値を書いておけばOK)
sheet = SpreadsheetApp.getActiveSpreadsheet(); // 表を取得
skus = sheet.getRange('B'+start.toString()+':B'+end.toString()).getValues(); // 在庫数を取得するSKUの配列を表から取得
nums = [];
for (let sku of skus){ // 指定範囲のSKUに対して順に:
if (sku.toString().length > 1){ // SKUが空欄でなかったら、その商品の在庫数を取得
num1 = []; num1.push(getStock(sku));
}
else{
num1 = ['']; // SKUが空欄だったら在庫数は取得せずに空欄としておく
}
nums.push(num1); // 在庫数の配列にその結果を追加
}
sheet.getRange('C'+start.toString()+':C'+end.toString()).setValues(nums); // 在庫数の配列を表のC列に書き込み
date = new Date();
date = Utilities.formatDate(date, "Asia/Tokyo", "yyyy/MM/dd hh:mm:ss");
sheet.getRange('C1').setValue('在庫数('+date+')'); // 在庫数取得の日時をC1に記録しておく
}
function getStock(sku) {
const options = {
"muteHttpExceptions" : true,
}
try {
res = UrlFetchApp.fetch("https://www.switch-science.com/products/"+sku.toString(), options); // URLを指定してSKU番号=skuの商品ページを取得(存在しないSKUなどのエラーの場合もあるので、optionsでエラー無視を指定)
if (res.getResponseCode() == 200){ // OKの場合
text = res.getContentText();
posS = text.indexOf('在庫数');
posE = text.indexOf('</p>', posS);
line = text.slice(posS, posE).split(' '); // 取得した商品ページのHTMLから在庫数を切り出し
num = line[1]; // 変数はグローバルなので、他の関数で使っている変数名はだめ(これでハマったのでメモ)
}
else{ // 指定したSKUの商品ページが存在しないなどのエラーのとき
num = -1
}
} catch(e) {
console.log('Error:')
console.log(e)
}
return(num);
};
如果您使用上面的“执行”按钮执行“检查库存”功能,库存数量将输入到表格的 C 列中。 (只有在第一次运行时才会要求您提供身份验证和执行权限,因此请单击“确定”。)
如果您在工作表启动时从“触发器”中指定此项,则在打开此工作表时将自动更新库存数量。
似乎可以定期获取股票数量并制作每周的图表。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308630807.html