javascript - appendRow 返回 [Ljava.lang.Object;@ 而不是值
问题描述
我想将表单提交复制到不同的工作表,以便可以编辑复制的数据而不影响原始提交。
我有以下代码:
function copy2(){
var responses = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("from");
var tracker = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("to");
var lastrow = responses.getLastRow();
var col = responses.getLastColumn();
var row = responses.getRange(lastrow, 1, 1, col).getValues();
tracker.appendRow([null,row[0]]);
使用null
inappendRow
可帮助您将信息移至下一列。但是,它不适用于row[0]
数组。如果我删除null
它可以正常工作,但我希望将信息复制到与第一个不同的列上。
解决方案
为什么是 Ljava.lang.Object?
因为您使用的是用 Java 编写的旧版 Rhino 运行时。因此,当意外发生时,您会看到 GAS 所基于的基础设施。现在,java.lang.object
是 Java 中的一个基类,包括数组在内的其他对象都是从该基类派生而来的。
由于appendRow
方法签名的唯一参数接受一维值数组row[0]
,因此包含数组(查看getvalues
方法返回什么)的 your 将其作为字符串标记添加到工作表中,表明这是运行时的对象。
在犀牛玩什么?
所有解决方案都依赖于[ null ]
作为您的基本数组并使用concat
附加第一行的其余部分,如下所示[ null ].concat(row[0])
:您还可以使用push
简单的for
循环以获得更好的性能。
在 V8 0中做什么?
正如提到的另一个答案,您最好的选择是传播语法。您还可以执行 apush(...row[0])
来避免连接数组(因为您立即使用并丢弃由 产生的副本[ null, ...row[0] ]
)。
0请参阅官方文档,了解如何迁移到 V8 以利用新的语言功能并提高速度。
推荐阅读
- python - python:自定义排序:不是纯粹的字典顺序,而是反向和最短的共同优先
- python - 如何在python中获取日期?
- eclipse - 配置 Eclipse 以使用 Glassfish 时出现问题
- mysql - 我们可以将 INT 加入 MySQL 中的 Varchar 吗?
- xml - 在 SSRS 中使用 XML 显示和解析列中的数据
- c++ - 包含参考变量的对象的大小
- python - Cat Facts API discord.py
- kartik-v - 如何在 Kartik 导出菜单中导出数据的标题前添加图像>
- python - 将python文件转换为exe时有没有办法最小化命令提示符
- react-native - 为什么 React Native aspectRatio 在视频元素上被忽略?