Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将几个GoogleSheets列转换为JSON字符串?_Arrays_Json_Google Apps Script_Google Sheets_Custom Function - Fatal编程技术网

Arrays 如何将几个GoogleSheets列转换为JSON字符串?

Arrays 如何将几个GoogleSheets列转换为JSON字符串?,arrays,json,google-apps-script,google-sheets,custom-function,Arrays,Json,Google Apps Script,Google Sheets,Custom Function,我正在编写一段代码,将两列(a、B)转换为JSON格式的键/值对。我不知道该怎么做。我目前有一个函数可以读取值的顶行(键)和底行,但是我无法让它显示中间的行。我不是工程师或开发人员,但我确实喜欢编码 该表如下所示: +-------+-------------+ | A | B | +-------+-------------+ | code | description | +-------+-------------+ | brand | microsoft

我正在编写一段代码,将两列(a、B)转换为JSON格式的键/值对。我不知道该怎么做。我目前有一个函数可以读取值的顶行(键)和底行,但是我无法让它显示中间的行。我不是工程师或开发人员,但我确实喜欢编码

该表如下所示:

+-------+-------------+ | A | B | +-------+-------------+ | code | description | +-------+-------------+ | brand | microsoft | +-------+-------------+ | size | large | +-------+-------------+ | color | green | +-------+-------------+ [{"code":"brand","description":"microsoft"}, {"code":"color","description":"green"}, {"code":"size","description":"large"}]
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);
}
+-------+-------------+ |A | B| +-------+-------------+ |代码|说明| +-------+-------------+ |品牌|微软| +-------+-------------+ |尺寸|大| +-------+-------------+ |颜色|绿色| +-------+-------------+ 我希望得到这样的JSON字符串:

+-------+-------------+ | A | B | +-------+-------------+ | code | description | +-------+-------------+ | brand | microsoft | +-------+-------------+ | size | large | +-------+-------------+ | color | green | +-------+-------------+ [{"code":"brand","description":"microsoft"}, {"code":"color","description":"green"}, {"code":"size","description":"large"}]
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);
}
[{“代码”:“品牌”、“说明”:“微软”},{“代码”:“颜色”、“说明”:“绿色”},{“代码”:“尺寸”、“说明”:“大”}] 到目前为止,我的Google Apps脚本代码如下所示:

+-------+-------------+ | A | B | +-------+-------------+ | code | description | +-------+-------------+ | brand | microsoft | +-------+-------------+ | size | large | +-------+-------------+ | color | green | +-------+-------------+ [{"code":"brand","description":"microsoft"}, {"code":"color","description":"green"}, {"code":"size","description":"large"}]
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(arr){ 变量i,j,obj={}; 对于(j=0;j 当我键入=“[”&tableJSON(A1:B4)&“]”时,结果是:

="[" & tableJSON(A1:B4) & "]" [{“代码”:“大小”,“说明”:“大”}] 我确信解决方案很简单,但我还没有弄明白。

问题: 代码只创建一个对象,并在每次迭代中重写相同的对象

解决方案:
  • 获取标题的2D数组

  • 将数组添加到对象

/**/console.config({maximize:true,timeStamps:false,autoScroll:false})/**/
/**
*@param{Array}arr 2D数组
*@customfunction
*@OnlyCurrentDoc
*/
函数表jsonfixed(arr){
"严格使用",;
常量[代码,描述]=arr.shift();
返回JSON.stringify(arr.map([v1,v2])=>({[code]:v1[desc]:v2}));
}
console.info(
tableJSONFixed([
['code','description'],
[‘品牌’、‘谷歌’],
['size','large'],
[‘颜色’、‘绿色’],
])
);


我曾使用tabletop将工作表转换为JSON,但如果你有一个组织性的google帐户,这将不会持续很久

我第一次看到新的Stack Snippet控制台:)@Rubén希望他们能直接集成它。自从它在github中更新以来已经三年了。哦!我刚注意到你加了它,很好:)