Google Spreadsheet脚本错误:"无法转换(类)...到Object [] []"

时间:2013-04-08 17:21:04

标签: google-apps-script google-sheets

我有一个包含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个日期。

谷歌搜索此错误消息没有出现任何问题。有没有人对我收到此错误的原因有什么想法,或者我可能会采取哪些措施来进一步排除故障?

3 个答案:

答案 0 :(得分:16)

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

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

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

[date1,date2,date3 ...]

当它需要像这样:

[[date1,date2,date3 ...]]

您使用new Array(arrDates)语句获得的

,或者您也可以使用:

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

答案 1 :(得分:3)

以下是我必须做的才能让它发挥作用:

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

欢迎任何解释!

答案 2 :(得分:0)

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

当我的数组中有太多行时,我收到此错误。不知道为什么我没有得到OTHER消息,我有时会看到范围高度和数组中行数之间的不匹配。