我正在尝试添加一个函数,以根据特定单元格的背景色来添加它们的值。我仍然遇到相同的错误。
不适用
function sumbycolor(sumRange,colorRef) {
var activeRange = SpreadsheetApp.getActiveRange();
var activeSheet = activeRange.getActiveSheet();
var formula = activeRange.getFormula().toString();
formula = formula.replace(new RegExp(';','g'),',');
var rangeA1Notation = formula.match(/\((.*)\,/).pop();
var range = activeSheet.getRange(rangeA1Notation);
var bg = range.getBackgrounds();
var values = range.getValues();
var colorCellA1Notation = formula.match(/\,(.*)\)/).pop();
var colorCell = activeSheet.getRange(colorCellA1Notation);
var color = colorCell.getBackground();
var total = 0;
for(var i=0;i<bg.length;i++)
for(var j=0;j<bg[0].length;j++)
if( bg[i][j] == color )
total=total+(values[i][j]*1);
return total;
};
var activeSheet = activeRange.getActiveSheet();
该行给我的错误是“无法调用null的方法“ GetActiveSheet”。
我不知道该如何解决。
答案 0 :(得分:1)
getActiveRange()返回null
。看来您正在尝试添加自定义工作表功能,而不是通过UI按钮或触发器操作的功能。实际上,您的函数带有两个您似乎从未使用过的参数。
看看how to process input of a range inside custom functions -但是,考虑到custom functions are passed their arguments as values而不是范围,您需要将范围作为字符串传递(即=MYCUSTOMFUNCTION("A1:A")
),然后在函数中使用...getRange(input)
。