我将函数映射到一个数组,该数组应该在我Yes
数组时给我No
或Logger.log(costsfinalised)
,具体取决于输入:
[No, No, No, No, Yes, No, No, Yes, Yes, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No, No]
但是当我尝试用setValues(costsfinalised)
粘贴它时,出现一条错误消息“无法将数组转换为对象”,而当我执行setValue(costsfinalised)
时,它确实可以工作,但仅适用于{{1} } s(实际上不是日志中的内容。为什么?如何将该数组粘贴到范围中?
No
答案 0 :(得分:3)
问题
您正在尝试将非法参数传递给方法,setValues()
仅接受二维Array
实例。您应将二维Array
视为单元格映射,其中元素表示行,而它们的元素列:
//pseudo-code;
[
row 1 : [col1, col2],
row 2 : [col1, col2]
]
解决方案
您可以修改代码以为您生成此Array
(从代码中判断,您想填充一列,对吗?不管怎样,如果您添加第二个循环来生成列值,您将能够用自定义的行数和列数填充Range
:
var col = destinationsheet.getRange(2,7,costsfinalised.length,1);
var temp = [];
for(var i=0; i<costsfinalised.length; i++) {
var row = [ costsfinalised[i] ];
temp.push(row);
}
col.setValues(temp);
替代
或者,您可以在map
上使用Array
方法(在您的情况下,您可以直接引用cost
而不是costsfinalised[i]
-只是不要忘记也将其包装-return [ cost ]
):
var col = destinationsheet.getRange(1,1,costsfinalised.length,1);
var output = costsfinalised.map(function (cost,i) { return [ costsfinalised[i] ]; } );
col.setValues(output);
有用的链接