具有未定义参数的函数

时间:2012-09-12 17:15:05

标签: google-apps-script google-sheets google-spreadsheet-api

我正在使用日历电子表格。本文档使用背景颜色来指定不同的事件。例如,会议是蓝色的,码头是红色的。

我正在尝试创建一个(总和,如果bg颜色)方法,在google电子表格中查看给定范围,计算具有特定背景颜色的单元格,为每个块指定权重(即30分钟)并返回在背景颜色的活动/周中花费的时间量。

我的基本问题是我的参数未定义(即使它们是范围),并且无法在未定义的对象类型上调用范围方法。

以下是代码:

    //this function sums cells of a given color having assigned each cell a given value.
    //it inspects a range and compares each cell's background color to a given background color
    //returns given title and calculated sum
    function sumifcolor(theRangeToInspect, valueOfCellInRangeToInspect, colorAndTitleCell) {
        var doc = SpreadsheetApp.getActiveSheet();
        var color = colorAndTitleCell.getBackgroundColor(); //get color
        var title = colorAndTitleCell.getInputvalueOfCellInRangeToInspect(); //get title
        theRangeToInspect.activate();
        var firstRow = theRangeToInspect.getRow();
        var lastRow = theRangeToInspect.getLastRow();
        var firstCol = theRangeToInspect.getColumn();
        var lastColumn = theRangeToInspect.getLastColumn();
        var result;

        //for loops iterate through every cell in a row
        for (var yy=firstRow; xx<=lastRow; xx++) {
           for (var xx=firstCol; yy<=lastCol; yy++) {
                if (doc.getRange(xx,yy).getBackgroundColor() = color) {result += valueOfCellInRangeToInspect} 
           };
        };
      return title + ": " + result;    
    };

1 个答案:

答案 0 :(得分:0)

我假设您正在尝试将您的函数用作电子表格中的公式。

在这种情况下,范围对象不会传递给函数,而是传递范围中的值。因此,

theRangeToInspect.getRow();

不起作用。 theRangeToInspect将包含范围的内容。