如何将几个Google表格列转换为JSON字符串?

时间:2020-10-02 03:09:13

标签: arrays json google-apps-script google-sheets custom-function

我正在处理一段代码,它将两列(A,B)转换为具有JSON格式的键/值对。我不知道如何使它工作。我目前有一个函数,可以读取值的最上面一行(键)和最下面一行,但是我无法获取它来显示中间的行。我既不是工程师也不是开发人员,但是我喜欢编码。

工作表如下:

+-------+-------------+
| A     | B           |
+-------+-------------+
| code  | description |
+-------+-------------+
| brand | microsoft   |
+-------+-------------+
| size  | large       |
+-------+-------------+
| color | green       |
+-------+-------------+

我期望得到这样的JSON字符串:

[{"code":"brand","description":"microsoft"}, {"code":"color","description":"green"}, {"code":"size","description":"large"}]

到目前为止,我的Google Apps脚本代码如下:

function tableJSON(arr) {
  var i, j, obj = {};
  for (j = 0; j < arr[0].length; j++) {
    obj[arr[0][j]] = {};
  }
  
  for (i = 0; i < arr.length; i++) {
    for (j = 0; j < arr[0].length; j++) {
      obj[arr[0][j]] = arr[i][j];
    }
  }
  
  return JSON.stringify(obj);
}

输入

="[" & tableJSON(A1:B4) & "]"
时的结果是:

[{"code":"size","description":"large"}]

我确定解决方案很简单,但我一直无法弄清楚。

2 个答案:

答案 0 :(得分:2)

问题:

该代码仅创建1个对象,并且每次迭代时都重写同一对象。

解决方案:

  • Shift二维数组以获取标头

  • Map到对象的数组

cnt
split_df <- function(y, df, ratio) {
  train <- sample.split(df[[y]], SplitRatio = ratio)
  list(training_Set = df[train,], test_Set = df[!train,])  
}
lapply(c("numberA", "numberB", "numberC"), split_df, Data_after, 0.66)

答案 1 :(得分:0)

https://github.com/jsoma/tabletop

我正在使用桌面将工作表转换为JSON,但是如果您有组织的Google帐户,那么它将无法使用更长的时间

相关问题