首页 > 解决方案 > 在 Google 表格中使用 Shopify API 自动跟踪产品数量

问题描述

我最近开始在 Google 表格上工作和学习,遇到了一些我无法解决的问题。

我想通过 Google 表格和 Shopify API 每小时自动跟踪我们 Shopify 网站上的产品数量。

为此,我使用了以下链接的教程:

https://medium.com/@paulgambill/how-to-import-json-data-into-google-spreadsheets-in-less-than-5-minutes-a3fede1a014

教程有效,我可以获得我们产品的数量,但是当我想每小时使用宏自动执行此操作时,宏总是在同一行上工作。

https://gyazo.com/6fe0710c7537d2d75249f28810276d43

我希望宏在第一行工作,向下 2 行,并在 1 小时后从停止的地方以相同的方式工作。

我添加的带有相关引用的宏代码:

function _1() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  spreadsheet.getActiveRange().setFormulaR1C1('=ImportJSON("https://kolayoto.com/collections/lastikleri.json")');
  spreadsheet.getCurrentCell().offset(2, 0).activate();
};

还,

当我更新页面时,我获得的 API 结果将替换为接下来几个小时的当前结果。每次自动 API 调用后,有什么方法可以将其转换为常量值?我们也可以在宏中设置吗?

我希望我能充分解释这些问题。如果你能帮忙,我会很高兴。

谢谢。

标签: google-sheetsshopifyspreadsheetgoogle-sheets-apigoogle-sheets-macros

解决方案


如果我正确理解您的问题,那么您正在寻找的是 function spreadsheet.getLastRow()spreadsheet.getLastRow()+1将返回下一个可用的空行。

此外,尝试使用 UrlFetchApp 获取方法,以便您可以更灵活地处理 json 键和值。尝试运行以下代码服务时间从一张白纸开始,看看这是否是您真正想要的。基本上我所做的是选择 json 数据的键和值并将它们设置为相应的范围。

function _1() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var startCol = 1
  var lastRow = spreadsheet.getLastRow();

  var rawtext = UrlFetchApp.fetch("https://kolayoto.com/collections/lastikleri.json").getContentText()
  var jsonObj = JSON.parse(rawtext);
  var contentObj = jsonObj.collection

  var columns = Object.keys(contentObj)

  var colName = []
  var result = []
  for (var i = 0; i < columns.length; i++){
    var key = columns[i]
    var value = contentObj[key]
    result.push(value)
  }

  var numRow = 1
  var numCol = columns.length
  if(lastRow+1 == 1){
    spreadsheet.getRange(lastRow+1, startCol, numRow, numCol).setValues([columns]);
    spreadsheet.getRange(lastRow+2, startCol, numRow, numCol).setValues([result]);
  }else {
    spreadsheet.getRange(lastRow+1, startCol, numRow, numCol).setValues([result]);
  }

  spreadsheet.getRange(lastRow+1, startCol).activate();
};

推荐阅读