使用 Shopify API in Google Sheets 自动跟踪产品数量
Automatically track the number of products with the Shopify API in Google Sheets
我最近开始在 Google 表格上工作和学习,遇到了一些我无法解决的问题。
我想通过 Google Sheets with the Shopify API.
每小时自动跟踪我们 Shopify 网站上的产品数量
为此,我使用了下面 link 提供的教程:
教程有效,我可以获得我们产品的数量,但是当我想每小时用宏自动执行此操作时,宏总是在同一行。
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 调用后,有没有办法将其转换为常量值?我们也可以在宏中设置这个吗?
我希望我能把问题解释清楚。如果你能帮上忙,我会很高兴。
谢谢。
如果我没看错你的问题,你要找的是函数spreadsheet.getLastRow()
。 spreadsheet.getLastRow()+1
将 return 下一个可用的空行。
此外,尝试使用 UrlFetchApp 提取方法,以便您可以更灵活地处理 json 键和值。尝试 运行 下面的代码 serval times 从空白 sheet 开始,看看这是否是您真正想要的。基本上我所做的是选择 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();
};
我最近开始在 Google 表格上工作和学习,遇到了一些我无法解决的问题。
我想通过 Google Sheets with the Shopify API.
每小时自动跟踪我们 Shopify 网站上的产品数量为此,我使用了下面 link 提供的教程:
教程有效,我可以获得我们产品的数量,但是当我想每小时用宏自动执行此操作时,宏总是在同一行。
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 调用后,有没有办法将其转换为常量值?我们也可以在宏中设置这个吗?
我希望我能把问题解释清楚。如果你能帮上忙,我会很高兴。
谢谢。
如果我没看错你的问题,你要找的是函数spreadsheet.getLastRow()
。 spreadsheet.getLastRow()+1
将 return 下一个可用的空行。
此外,尝试使用 UrlFetchApp 提取方法,以便您可以更灵活地处理 json 键和值。尝试 运行 下面的代码 serval times 从空白 sheet 开始,看看这是否是您真正想要的。基本上我所做的是选择 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();
};