6

我有一个包含 13 个日期的维度数组,我想将其放入电子表格行中。

当我调试这段代码时:

if (arrDates.length > 0) {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var destSheet = spreadsheet.getSheetByName("Employee Capacity Detail");
    destSheet.getRange("C2").offset(0,0,arrDates.length).setValues(arrDates);
}

我收到此错误消息:“无法将(类)@7c02952c 转换为 Object[][]。” 在这条线上:

destSheet.getRange("C2").offset(0,0,arrDates.length).setValues(arrDates);

我也试过这个:

destSheet.getRange(1, 3, 1, 14).setValues(arrDates);

还有这个:

var destRange = destSheet.getRange("C2:P2");
destRange.setValues(arrDates);

并得到同样的错误。

在调试器中,我可以看到 arrDates 按预期填充了 14 个日期。

谷歌搜索此错误消息没有出现任何内容。有没有人知道我为什么会收到这个错误,或者我可以做些什么来进一步排除故障?

4

3 回答 3

16

https://developers.google.com/apps-script/reference/spreadsheet/range#setValues(Object)

这里的关键是,当您填充(或从中检索数据)电子表格范围时,您必须始终“设置”一个二维数组,即使该范围是一行高。在 Javascript 中,这将是一个“数组数组”,其中外部数组表示行,内部数组表示每行中的单元格。

大概你的 arrDates 数组是这样的:

[日期 1、日期 2、日期 3……]

当它需要是这样的:

[[日期1,日期2,日期3...]]

您通过new Array(arrDates)声明实现的,或者您也可以使用:

destSheet.getRange(1, 3, 1, 14).setValues([arrDates]));

于 2013-04-08T21:52:45.707 回答
3

这是我必须做的才能让它工作:

destSheet.getRange(1, 3, 1, 14).setValues(new Array(arrDates));

欢迎任何解释!

于 2013-04-08T20:22:25.460 回答
0

确保发送到 setValues 的数组中的行数与 getRange 中指示的行数相匹配。

当我的数组中有 2 行太多时出现此错误。不知道为什么我有时没有收到关于范围高度和数组中的行数不匹配的其他消息。

于 2013-12-11T16:59:42.490 回答