Jae*_*ton 4 javascript parsing json google-sheets google-apps-script
编辑*** 现在我有了正确的来源,修改了问题......
我正在尝试将通信日志复制到 Google Sheets,但对脚本(或 JSON)了解不够,无法实现此目的。我只想让电子表格模拟/复制可用的整个日志。
脚本运行并且没有错误,但电子表格中没有任何内容。我尝试使用的代码片段在这里:
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()); //
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
}
data = sheet.getRange(1,1,99,10).getValues();
sheet.getRange(1,1,99,10).setValues(data);
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何做到这一点,以及关于这个错误是什么以及为什么我会得到它的教育解释,我正在努力学习而不仅仅是寻求帮助。
电子表格是一个空白画布,所以如果我需要对其做一些特殊的事情以使脚本正常工作,是否也可以解释一下?谢谢你们。
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
如果我的理解是正确的,这个答案怎么样?
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);
Run Code Online (Sandbox Code Playgroud)
这意味着检索到的数据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
有您想要放入的值,这些值也不会放入电子表格中。
在本节中,我修改了您的脚本,以将从 URL 获取的数据中的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
如下所示。
{
"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": []
}
Run Code Online (Sandbox Code Playgroud)
从您的脚本中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.
}
Run Code Online (Sandbox Code Playgroud)
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 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.
}
Run Code Online (Sandbox Code Playgroud)
在本例中,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
}
Run Code Online (Sandbox Code Playgroud)从你的问题来看,我不确定你想要将哪些值放入电子表格的情况。如果要修改输出格式,请修改上面的脚本。
如果我误解了你的问题并且这不是你想要的方向,我很抱歉。
归档时间: |
|
查看次数: |
15081 次 |
最近记录: |