Импортировать JSON объект в Google SpreadSheet с помощью Google APP Script - PullRequest
0 голосов
/ 15 апреля 2020

Я пишу скрипт, который вызывает REST API для получения JSON объекта в качестве ответа, а затем импортирует этот объект JSON в Google SpreadSheet. Я написал код для вызова REST API и получения объекта JSON. Теперь мне нужно написать такой код, который будет записывать объект JSON в Google SpreadSheet. Пожалуйста, смотрите ниже код:

function myFunction() {


    var options = {};
    options.headers = {"Authorization": "Basic " + Utilities.base64Encode("username" + ":" + "password")}
    options.muteHttpExceptions=true;


    // var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});

    var response=UrlFetchApp.fetch("url", options);

    var dataAll=JSON.parse(response.getContentText())

    Logger.log(dataAll)

    /*
    var sheet = Sheets.newSpreadsheet();
    sheet.properties = Sheets.newSpreadsheetProperties();
    sheet.properties.title = "Demo";
    var spreadsheet = Sheets.Spreadsheets.create(sheet);
    */
}

Это код для вызова получить объект JSON. Комментированные строки кода предназначены для вызова API Google Sheets. Мне нужен такой скрипт, который будет импортировать данные в объект dataAll, который является JSON объектом в Google SpreadSheet.

Объект JSON выглядит следующим образом:

[
{
    "id": 3428,
    "type": "SUPER",
    "firstName": "Nikhil",
    "lastName": "Dingane",
    "loginName": "nikhildingane",
    "domain": "openspecimen",
    "emailAddress": "nikhil@krishagni.com",
    "instituteName": "Krishagni Institute",
    "primarySite": "KSPL site",
    "admin": true,
    "instituteAdmin": false,
    "manageForms": true,
    "cpCount": 0,
    "creationDate": 1586333347000,
    "activityStatus": "Active"
},
{
    "id": 3439,
    "type": "NONE",
    "firstName": "NikhilUpdated",
    "lastName": "Dingane",
    "loginName": "nikhildingane1",
    "domain": "openspecimen",
    "emailAddress": "nikhil.nikhil.dingane@gmail.com",
    "instituteName": "Krishagni Institute",
    "primarySite": "KSPL site",
    "admin": false,
    "instituteAdmin": false,
    "manageForms": true,
    "cpCount": 0,
    "creationDate": 1586427573000,
    "activityStatus": "Active"
}
]

Я хочу чтобы написать это JSON в Google SpreadSheet

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Range.setValues() используется для установки данных в виде двумерного массива для листа. Используйте Object.values ​​ и Object.keys с Array.map для преобразования массива объектов в 2D-массив.

const data = [
{
"id": 3428,
"type": "SUPER",
"firstName": "Nikhil",
"lastName": "Dingane",
"loginName": "nikhildingane",
"domain": "openspecimen",
"emailAddress": "nikhil@krishagni.com",
"instituteName": "Krishagni Institute",
"primarySite": "KSPL site",
"admin": true,
"instituteAdmin": false,
"manageForms": true,
"cpCount": 0,
"creationDate": 1586333347000,
"activityStatus": "Active"
},
{
"id": 3439,
"type": "NONE",
"firstName": "NikhilUpdated",
"lastName": "Dingane",
"loginName": "nikhildingane1",
"domain": "openspecimen",
"emailAddress": "nikhil.nikhil.dingane@gmail.com",
"instituteName": "Krishagni Institute",
"primarySite": "KSPL site",
"admin": false,
"instituteAdmin": false,
"manageForms": true,
"cpCount": 0,
"creationDate": 1586427573000,
"activityStatus": "Active"
}
];

const out = [Object.keys(data[0]),...data.map(Object.values)];
console.info(out);
//SpreadsheetApp.getActive().getSheets()[0].getRange(1,1,out. length,out[0].length).setValues(out)
0 голосов
/ 15 апреля 2020

Предполагая, что dataAll является двумерным массивом значений

Вы можете сделать это следующим образом с SpreadsheetApp:

var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var range = sheet.getRange(1,1, dataAll.length, dataAll[0].length);
range.setValues(dataAll);

Ссылки:

Как преобразовать JSON Объект в 2D массив Например, используйте map, чтобы преобразовать их в массив. . Соберите отдельные массивы, чтобы установить их в лист var array = []; for (var i = 0; i< json.length; i++){ var newJson = Object.keys(json[i]).map(function (key) { return [key, json[i][key]]; }); for(var j = 0; j< newJson.length; j++){ array.push(newJson[j]); } } var ss = SpreadsheetApp.getActive(); var sheet = ss.getActiveSheet(); var range = sheet.getRange(1,1, array.length, array[0].length); range.setValues(array); .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...