尝试获取JSON数据并将其放入googlesheet

时间:2019-06-11 19:58:17

标签: google-apps-script google-sheets

我在googlesheet中设置值时遇到问题。 Googlesheet setValue仅支持数组,但我需要将对象放入行中。

我尝试使用appendRow,但是在自定义函数中无法使用。我还尝试了setValue并将对象转换为数组,但是后来我错过了一些数据。

这是我的提取功能。它可以正常工作并获取我需要的所有数据,但是对我来说将其放入googlesheet确实很困难。





function importTrelloJSON(url){
  var response = UrlFetchApp.fetch(url);
  var content = response.getContentText();
  var data = JSON.parse(content);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();


  var trelloJSON = data.map(function(el, index) {
      var customFieldItems = el.customFieldItems.map(function(el){
        return [el.idCustomField, el.value.number];
      });

     return  { name: el.name, customFieldItems: customFieldItems };
   });

  retrun trelloJSON;
}


and this is my JSON structure, sometimes there is nested data


[
{
"id": "5ce26ef1d5bdac4ec20e8982",
"name": "WWW",
"customFieldItems": []
},
{
"id": "5ced04d96ec7ed6120b5e91d",
"name": "Marketing",
"customFieldItems": []
},
{
"id": "5cfed3d8e88f931008aa58ad",
"name": "Reset softu Android",
"customFieldItems": [
{
"id": "5cfed4145d019516555a9086",
"value": {
"number": "100"
},
"idCustomField": "5ced79c27bbd7102945ba1ff",
"idModel": "5cfed3d8e88f931008aa58ad",
"modelType": "card"
}
]
},

我尝试使用现成的importJSON函数https://github.com/bradjasper/ImportJSON,但不适用于我的查询。

感谢帮助。

//编辑 现在我可以显示数据,但是当我按数组时,范围就会出现问题。数据列数与范围内的列数不匹配。 我尝试了Math.max.apply(Math,trelloJSON.map(function(el){return el.length}))。但是它不再起作用了。

这是我的新代码:

function importTrelloJSON(url){
  var response = UrlFetchApp.fetch(url);
  var content = response.getContentText();
  var data = JSON.parse(content);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var mainArray = new Array();


  var trelloJSON = data.map(function(el, index) {
    mainArray = [];
    mainArray.push(el.name);

   el.customFieldItems.map(function(el){
        mainArray.push(el.idCustomField);
        mainArray.push(el.value.number);  
      });

    Logger.log(mainArray);

    return mainArray;
   });

  sheet.getRange(1,1, trelloJSON.length, Math.max.apply(Math, trelloJSON.map(function (el) { return el.length }))).setValues(trelloJSON);

}


0 个答案:

没有答案