我正在使用日历电子表格。本文档使用背景颜色来指定不同的事件。例如,会议是蓝色的,码头是红色的。
我正在尝试创建一个(总和,如果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;
};
答案 0 :(得分:0)
我假设您正在尝试将您的函数用作电子表格中的公式。
在这种情况下,范围对象不会传递给函数,而是传递范围中的值。因此,
theRangeToInspect.getRow();
不起作用。 theRangeToInspect将包含范围的内容。