-1

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

我正在尝试创建一个(sum if bg color)方法,该方法查看谷歌电子表格中的给定范围,计算具有特定背景颜色的单元格,为每个块分配权重(即 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;    
    };
4

1 回答 1

0

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

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

theRangeToInspect.getRow();

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

于 2012-09-12T17:44:23.550 回答