【问题标题】:Google Spreadsheet script error : "Cannot convert (class) ... to Object[][]"Google 电子表格脚本错误:“无法将(类)... 转换为 Object[][]”
【发布时间】:2013-04-08 17:21:04
【问题描述】:

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

对此错误消息的谷歌搜索没有出现任何结果。是否有人对我收到此错误的原因有任何想法,或者我可以做些什么来进一步排除故障?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      欢迎任何解释!

      【讨论】:

      • 使用 arrDates.push([date1,date2...]);而不是 arrDatesarrDates.push(date1,date2...);
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多