- 你想知道
The script run and there are no errors, but nothing goes onto the spreadsheet.的原因。
- 在您的脚本中,您希望将
repeaterid 和callsign 的值从https://api.brandmeister.network/v1.0/repeater/?action=get&q=1148311 的URL 中提取的数据中放入。
如果我的理解是正确的,那么这个答案呢?
答案 1:
本节解释The script run and there are no errors, but nothing goes onto the spreadsheet.的原因。
当我看到您的脚本时,会在您的脚本底部看到以下脚本。
data = sheet.getRange(1,1,99,10).getValues();
sheet.getRange(1,1,99,10).setValues(data);
这意味着getRange(1,1,99,10)检索到的数据放在同一个范围内。即,该范围被相同的值覆盖。从您的问题的The spreadsheet is a blank canvas 开始,范围的空值被放入相同的范围。并且其他部分的脚本没有出现错误。这就是The script run and there are no errors, but nothing goes onto the spreadsheet.的原因。
另外,在你的脚本中,rows 没有被使用。这样,即使rows 有您想要输入的值,这些值也不会输入到电子表格中。
答案 2:
在本节中,我修改了您的脚本,将repeaterid 和callsign 的值放在从https://api.brandmeister.network/v1.0/repeater/?action=get&q=1148311 的URL 中提取的数据中。
当从https://api.brandmeister.network/v1.0/repeater/?action=get&q=1148311的URL检索到的值如下。
{
"repeaterid": "1148311",
"callsign": "KD8YYA",
"hardware": "Android:BlueDV",
"firmware": "1.0.121-DVMEGA_HR3.07",
"tx": "437.0000",
"rx": "437.0000",
"colorcode": "1",
"status": "4",
"lastKnownMaster": "3108",
"lat": "0.000000",
"lng": "0.000000",
"city": "Somewhere",
"website": "www.pa7lim.nl",
"pep": null,
"gain": null,
"agl": "1",
"priorityDescription": null,
"description": null,
"last_updated": "2019-06-14 15:46:09",
"sysops": []
}
从您的rows.push([data.repeaterid, data.callsign]) 脚本中,我可以理解您可能想要检索repeaterid 和callsign 的值,并希望将这些值放入电子表格。为了检索它们,请按如下方式修改您的脚本。
修改脚本一:
function pullJSON() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheet = ss.getActiveSheet();
var url="https://api.brandmeister.network/v1.0/repeater/?action=get&q=1148311"; // Paste your JSON URL here
var response = UrlFetchApp.fetch(url); // get feed
var dataAll = JSON.parse(response.getContentText());
// I modified below.
var row = [dataAll.repeaterid, dataAll.callsign]; // Retrieve values from JSON object of dataAll.
sheet.appendRow(row); // Append the values to Spreadsheet.
}
- 通过这个修改后的脚本,检索到的
repeaterid 和callsign 被放到电子表格的活动表中。
修改脚本2:
function pullJSON() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheet = ss.getActiveSheet();
var url="https://api.brandmeister.network/v1.0/repeater/?action=get&q=1148311"; // Paste your JSON URL here
var response = UrlFetchApp.fetch(url); // get feed
var dataAll = JSON.parse(response.getContentText());
// I modified below.
var rows = [Object.keys(dataAll)]; // Retrieve headers.
var temp = [];
for (var i = 0; i < rows[0].length; i++) {
temp.push(dataAll[rows[0][i]]); // Retrieve values.
}
rows.push(temp);
sheet.getRange(1,1,rows.length,rows[0].length).setValues(rows); // Put values to Spreadsheet.
}
- 通过这个修改后的脚本,所有键和值都被放入电子表格中。
注意:
-
在这种情况下,dataAll 不是一个数组。所以你下面的脚本,for循环不起作用。这样,rows 就变成了[]。
var dataSet = dataAll;
var rows = [], data;
for (i = 0; i < dataSet.length; i++) {
data = dataSet[i];
rows.push([data.repeaterid, data.callsign]); //your JSON entities here
}
根据您的问题,我不确定您想要将值放入电子表格的情况。如果要修改输出格式,请修改上面的脚本。
参考资料:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。