我要在电子表格行中放入一个包含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);
}

我收到此错误消息:“无法将(class)@ 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个预期的日期。

谷歌搜索此错误消息没有打开任何东西。是否有人对我为什么会收到此错误有任何想法,或者我可能会做些什么来进一步解决问题?

最佳答案

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]));

10-05 20:36
查看更多