我需要在Google文档中从单个电子表格单元格中的一组值对生成一个表。单元格(A1(中的值的格式如下:
["a1","a2"],["b1","b2"],["c1","c2"]
我试过:
testData = testSheet.getRange(1,1,1, 1).getValues().toString().split(",");
Logger.log(testData)
这给了我:
[["a1","a2"],["b1","b2"],["c1","c2"]]
对我来说,这看起来像一个2D阵列,但当我尝试时:
testDoc.insertTable(testField, testData)
我得到错误:
Exception: The parameters (number,number[]) don't match the method signature for DocumentApp.Body.insertTable.
当我在函数中手动定义数组时:
testData = [["a1","a2"],["b1","b2"],["c1","c2"]]
表已按预期插入。
我可以以不同的方式格式化单元格中的数据,但我需要所有的值对都在一个单元格中。
修改点:
-
当CCD_;A1";,当小区值由
testSheet.getRange(1,1,1, 1).getValues()
检索时,它是[["["a1","a2"],["b1","b2"],["c1","c2"]"]]
。在这种情况下,["a1","a2"],["b1","b2"],["c1","c2"]
是字符串类型。- 这可以通过
JSON.stringify
来确认
- 这可以通过
-
由此,当小区值由
testSheet.getRange(1, 1, 1, 1).getValues().toString().split(",")
检索时,它变为["["a1"",""a2"]","["b1"",""b2"]","["c1"",""c2"]"]
。在这种情况下,["a1"",""a2"]
、["b1"",""b2"]
和["a1","a2"],["b1","b2"],["c1","c2"]
0是字符串值。- 我认为这就是你问题的原因
-
为了将
["a1","a2"],["b1","b2"],["c1","c2"]
的单元格值用作二维数组,需要对其进行解析
当这些点反映在脚本中时,下面的修改如何?
发件人:
testData = testSheet.getRange(1,1,1, 1).getValues().toString().split(",");
收件人:
testData = JSON.parse(`[${testSheet.getRange(1, 1, 1, 1).getValue()}]`); // In this case, I think that `getDisplayValue()` is used instead of `getValues`.
通过这种修改,["a1","a2"],["b1","b2"],["c1","c2"]
的值可以用作[["a1","a2"],["b1","b2"],["c1","c2"]]
的二维数组
测试:
const value = '["a1","a2"],["b1","b2"],["c1","c2"]';
const testData = JSON.parse(`[${value}]`);
console.log(testData)
console.log(testData[0][0]) // a1
参考:
- JSON.parse((
我会试试这个:
var testData = eval('[' + testSheet.getRange('A1').getDisplayValue() + ']');
测试代码:
var s = '["a1","a2"],["b1","b2"],["c1","c2"]';
var testData = eval('[' + s + ']');
console.log(testData);