Switch Science 的网页已更新,因此难以从产品列表中查看库存数量。作为寄售商,我想检查我的产品库存,但这变得困难。

因此,在学习 GAS (Google Apps Script) 时,我尝试获取写在 Google 电子表格中的产品编号 (SKU) 的库存编号并更新库存编号表。策略很简单:用HTML获取指定SKU的产品页面(可以从SKU机械地创建URL),剪掉里面写的库存数量,记录下来。

首先,使用您要在 B 列中查找的 SKU 创建一个 Google 电子表格。为便于理解,将产品名称写在 A 栏中。
GASでスイッチサイエンスの在庫数を取得して表にまとめてみた

对于这个表,让我们使用 GAS 来获取 B 列中每个 SKU 的库存数量,并将其输入到 C 列中。

首先,在此表单上选择“扩展”→“应用程序脚本”以打开 Google Apps 脚本的编辑屏幕。您可以将脚本名称放在左上角,因此最好将其命名为“SS Inventory Check”(SS = Switch Science)。
GASでスイッチサイエンスの在庫数を取得して表にまとめてみた

脚本是用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 列中。 (只有在第一次运行时才会要求您提供身份验证和执行权限,因此请单击“确定”。)

GASでスイッチサイエンスの在庫数を取得して表にまとめてみた

GASでスイッチサイエンスの在庫数を取得して表にまとめてみた

如果您在工作表启动时从“触发器”中指定此项,则在打开此工作表时将自动更新库存数量。

似乎可以定期获取股票数量并制作每周的图表。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308630807.html

相关文章: