0

次のコードがあり、それを実行すると、sheetFormulas (4) に適切な数のアイテムが取得され、配列値が正しく形成されているように見えます。

ただし、sheetFormulas Browser.msgBox がポップアップした直後にエラーが発生し、getRange().setFormulas 行に問題があることを示していますが、それが何であるかはわかりません。

function test(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var testingTarget = ss.getSheetByName("Testing");
    var sheetFormulas = new Array();
    for (l=0;l<10;l++) {
        sheetRowCount = l + 2;
        var monthlyTotalCompanyCosts = '=F' + sheetRowCount + '/$F$29*$I$14';
        var monthlyTotalCompanyCostsPerEa = '=IFERROR(H' + sheetRowCount + '/C' + sheetRowCount + ')';
        var monthlyMargin = '=D' + sheetRowCount + '-F' + sheetRowCount;
        var monthlyMarginPctg = '=IFERROR(J' + sheetRowCount + '/D' + sheetRowCount + ')';
        sheetFormulas.push(monthlyTotalCompanyCosts,monthlyTotalCompanyCostsPerEa,monthlyMargin,monthlyMarginPctg);
    Browser.msgBox("sheetFormulas.length is: " + sheetFormulas.length);
    Browser.msgBox("sheetFormulas is: " + sheetFormulas);
    testingTarget.getRange(sheetRowCount,8,1,4).setFormulas(sheetFormulas);
    sheetFormulas = [];
    }
}

どんな助けでも大歓迎です、

フィル

4

1 に答える 1

0

まず、sheetFormulas は 2D 配列でなければなりません。だからやってみる

/* Notice the [] around sheetFormulas */
testingTarget.getRange(sheetRowCount,8,1,4).setFormulas([sheetFormulas]);

それでも他の問題が発生する場合は、コードを try{}catch{} ブロック内に配置し、catch ブロックで例外を出力してください。

また、スプレッドシートに設定する前に、 Logger.log() を使用して数式を印刷することをお勧めします。

于 2012-08-17T18:28:38.137 に答える