为什么不用数组追加行?

时间:2017-02-24 20:05:14

标签: javascript google-apps-script append

我正在尝试在工作表的底部插入一行,但是我看到的文本与您尝试在Java中打印数组时发生的情况类似。我检查了数组是否使用logger正确制作,并且它具有我想要的值。

var name = e.range.getRow() + SpreadsheetApp.getActiveSpreadsheet().getName();
var array = e.range.getValues().concat(name);
Logger.log(array.toString());
masterSheet.appendRow(array);

array包含一个时间戳,string1,string2,最后是我连接的名称。取而代之的是[Ljava.lang.Object;@7dch7145

2 个答案:

答案 0 :(得分:1)

这是因为appendRow()正在寻找array []而不是array [] []。

如果您尝试追加:

var array = [[1,2,3],"some string"]  

它将显示如下,因为它试图在单个单元格中获取数组的第一个位置的全部内容。它通过返回一个数组对象的字符串来实现这一点,该字符串结果是原生代码标识符。

[Ljava.lang.Object;@32dba1e2 |  some string

您可以通过附加其各个成员(例如

)来附加数组的内容
ss.appendRow(array[0])

会追加

1 | 2 | 3

答案 1 :(得分:0)

使用getValues()看起来像是一个问题,它返回一个二维数组,需要像这样访问。

GAS API Reference: getValues()

  

返回

     

Object [] [] - 值的二维数组

我认为设置var array的编辑应该可以解决问题,假设您的数据范围是单行(索引0将是第一行,否则只需将索引更改为您想要的行):

var array = e.range.getValues()[0].concat(name);