Я пытаюсь записать извлечение каталога, предоставленного в JSON, в электронную таблицу Google.
Я могу получить JSON и записать поля, но я застрял при записи данных сотрудника на лист,JSON предоставляет ассоциативный массив.Насколько я понимаю, чтобы использовать Range.setValues()
, вам нужно иметь числовой массив.
Я могу записать названия полей в первый рядGoogle Sheet.
Код, который я использую для записи данных о сотрудниках:
function writeJSONtoSheet(json, sheetId) {
var sheet = SpreadsheetApp.openById(sheetId).getSheets()[0];
var header = sheet.getRange(1, 1, 1, json['fields'].length+1); //A1 to O1
var headerVals = header.getValues();
var newColsTitles = ["ID #"];
var newColsIndex = ["id"];
for (var i = 0; i < json['fields'].length; i++){
newColsTitles.push(json['fields'][i]['name']);
newColsIndex.push(json['fields'][i]['id'])
}
header.setValues([newColsTitles]);
var employeeRows = sheet.getRange(2,1,json['employees'].length,json['fields'].length+1);
var employees = [];
var empArr = [];
var emps = [];
for (var e = 0; e < json['employees'].length; e++) {
employees.push(json['employees'][e]);
}
for (var y = 0; y < employees.length; y++){
for (var x = 0; x < newColsIndex.length; x++){
empArr[y] = [];
empArr[y][x] = employees[y][newColsIndex[x]];
console.log(employees[y][newColsIndex[x]])
}
}
employeeRows.setValues(empArr);
}
Когда я регистрирую employees[y][newColsIndex[x]]
внутри Цикла, он корректно зацикливается на полях каждого сотрудника.
Формат JSON следующий:
{
"fields": [
{
"id": "displayName",
"type": "text",
"name": "Display Name"
},
{
"id": "firstName",
"type": "text",
"name": "First Name"
},
{
"id": "lastName",
"type": "text",
"name": "Last Name"
},
{
"id": "gender",
"type": "text",
"name": "Gender"
},
{
"id": "jobTitle",
"type": "list",
"name": "Job Title"
},
{
"id": "workPhone",
"type": "text",
"name": "Work Phone"
},
{
"id": "workPhoneExtension",
"type": "text",
"name": "Work Extension"
},
{
"id": "skypeUsername",
"type": "text",
"name": "Skype Username"
},
{
"id": "facebook",
"type": "text",
"name": "Facebook URL"
}
],
"employees": [
{
"id":123,
"displayName":"John Doe",
"firstName":"John",
"lastName":"Doe",
"gender":"Male",
"jobTitle":"Customer Service Representative",
"workPhone":"555-555-5555",
"workPhoneExtension":null,
"skypeUsername":"JohnDoe",
"facebook":"JohnDoeFacebook"
}
]
}