Если мое понимание верно, как насчет этого ответа?
Ответ 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
из выбранных данных с URL-адреса 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": []
}
Из вашего сценария rows.push([data.repeaterid, data.callsign])
я мог понять, что вы можете получить значения repeaterid
и callsign
и поместить их в электронную таблицу.Чтобы получить их, пожалуйста, измените ваш скрипт следующим образом.
Модифицированный скрипт 1:
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
}
Из вашего вопроса, я не уверен насчет ситуации, когда вы хотите, чтобы значения помещались в электронную таблицу.Если вы хотите изменить формат вывода, измените приведенный выше скрипт.
Ссылки:
Если я неправильно понял ваш вопрос, и это не то направление, которое вам нужноПрошу прощения.