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

次のエラー メッセージが表示されます。「(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 の日付が設定されていることがわかります。

このエラー メッセージの Google 検索では、何も表示されませんでした。なぜこのエラーが発生するのか、またはさらにトラブルシューティングを行うために何をすべきかについて、誰か考えがありますか?

4

3 に答える 3

16

https://developers.google.com/apps-script/reference/spreadsheet/range#setValues(オブジェクト)

ここで重要なのは、スプレッドシートの範囲にデータを入力する (またはそこからデータを取得する) 場合、範囲が 1 行の高さであっても、常に 2 次元配列を「設定」する必要があるということです。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 行が多すぎると、このエラーが発生しました。範囲の高さと配列内の行数の不一致について時々目にする OTHER メッセージが表示されなかった理由がわかりません。

于 2013-12-11T16:59:42.490 に答える