google-apps-script - Google 电子表格脚本错误 : "Cannot convert (class) ... to Object[][]"

标签 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 个日期。

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

最佳答案

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

关于google-apps-script - Google 电子表格脚本错误 : "Cannot convert (class) ... to Object[][]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15885179/

相关文章:

pdf - 如何将单张 PDF 文件直接下载到我的本地设备(不导出到 Google Drive)?

google-sheets - 在 Google Sheets 中,如何根据在不同列中拆分字符串的结果聚合值(MAX、MIN、AVERAGE)?

javascript - 如何查找重复项 - 通过引用第一列?

google-apps-script - 如何修改触发器,以便在编辑时发送电子邮件,但速度不那么快?

loops - 如何循环谷歌电子表格列值并在 B 列中设置结果?

javascript - 结果中仅出现数组中的一个值

google-apps-script - Bigquery API : Running query with destinationTable does not save results

javascript - 将数据发送到谷歌电子表格

google-sheets - 如何从非连续数字列表创建范围显示?

csv - 如何从已上传到我们的 Google 云端硬盘的 CSV 自动导入和替换 Google 表格中的数据?