【问题标题】:Spreadsheet display JSON data into columns and rows电子表格将 JSON 数据显示为列和行
【发布时间】:2017-09-10 17:34:59
【问题描述】:

我想在 Google 电子表格中处理大量数据,以便轻松创建图表和所有这些东西。数据来自 URL 的 Json 格式。我可以成功地在电子表格中获取这些数据,但我无法找到一种简单的方法将这些数据分配到工作表的列中。

这是 JSON 结构的示例:

有什么简单的方法可以实现我的目标吗?

非常感谢。

【问题讨论】:

  • 如果您对我的回答有疑问,请随时告诉我。我想学习解决你的问题。

标签: json google-sheets data-representation


【解决方案1】:

这个示例脚本怎么样?此示例脚本使用递归调用检索 JSON 数据中的所有元素,并将它们导入电子表格。

为了使用这个脚本,请进行如下设置。 1. 将此脚本用作电子表格的绑定脚本。 1.在main()中定义json数据或作为全局变量。

示例 JSON:

var json = {
  keyA: {
    ArrayA1: ["ArrayA1_val1", "ArrayA1_val2", "ArrayA1_val3"],
    keyA1: "keyA1_val",
    keyA2: "keyA2_val",
  },
  keyB: {
    ArrayB1: ["ArrayB1_val1", "ArrayB1_val2", "ArrayB1_val3"],
    keyB1: "keyA1_val",
    keyB2: "keyA2_val",
    keyB3: {
      ArrayB31: ["ArrayB31_val1", "ArrayB31_val2", "ArrayB31_val3"],
      ArrayB32: ["ArrayB32_val1", "ArrayB32_val2", "ArrayB32_val3"],
    }
  }
};

示例脚本:

function getElements(v, callback) {
  for (var k in v) {
    callback(
      k,
      Object.prototype.toString.call(v[k]).slice(8, -1).toLowerCase() === "object"
        ? JSON.stringify(v[k], null, "\t") : v[k],
      Object.prototype.toString.call(v[k]).slice(8, -1).toLowerCase()
    );
    if (typeof v[k] === "object") {
      getElements(v[k], callback);
    }
  }
}

function main() {
  var ar = [];
  getElements(json, function(key, value, type) {ar.push([key, value, type])});

  var ss = SpreadsheetApp.getActiveSheet();
  ss.getRange(ss.getLastRow() + 1, 1, ar.length, ar[0].length).setValues(ar);
}

结果:

如果我误解了你的问题,我很抱歉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多