【发布时间】:2016-10-24 04:54:17
【问题描述】:
我对我的 Google Apps 脚本感到困惑,该脚本旨在仅当这些单元格为粗体时才计算单元格的总和。
这里是来源:
function SumIfNotBold(range, startcol, startrow){
// convert from int to ALPHANUMERIC
// - thanks to Daniel at http://stackoverflow.com/a/3145054/2828136
var start_col_id = String.fromCharCode(64 + startcol);
var end_col_id = String.fromCharCode(64 + startcol + range[0].length -1);
var endrow = startrow + range.length - 1
// build the range string, then get the font weights
var range_string = start_col_id + startrow + ":" + end_col_id + endrow
var ss = SpreadsheetApp.getActiveSpreadsheet();
var getWeights = ss.getRange(range_string).getFontWeights();
var x = 0;
var value;
for(var i = 0; i < range.length; i++) {
for(var j = 0; j < range[0].length; j++) {
if(getWeights[i][j].toString() != "bold") {
value = range[i][j];
if (!isNaN(value)){
x += value;
}
}
}
}
return x;
公式如下:
=(SumIfNotBold(K2:K100,COLUMN(K2), ROW(K2)))*1
我主要担心三个问题:
- 当我设置触发器以在任何编辑上启动此脚本时,我不小心收到了一封来自 Google Apps 的电子邮件,指出
TypeError:无法从未定义中读取属性“长度”。 (第 7 行,文件 "SumIfNotBold")
那么,我该如何解决呢?有什么方法可以忽略这些自动发送的通知?
如果单元格在另一个列表中,则公式不会计算单元格的总和。例如,如果我将公式放在 B 列表中,但单元格位于 A 列表中,则此脚本在推导错误计算方面无法正常工作。
当单元格值更新时,公式推导不会。在这种情况下,我正在刷新公式本身(即,将“K2:K50”更改为“K3:K50”并返回一次)以获得更新的推导。
请帮我解决这个脚本的问题。或者,如果最好使用一个新的来计算非粗体单元格中的总和,那么我很乐意接受您的新解决方案。
【问题讨论】:
-
当您设置触发器“在任何编辑时启动此脚本”时,您希望它的总和范围是多少?它怎么知道你想要什么范围?
-
@soup,是的,这很明显,但我做到了,因为我需要更新
SumIfNotBold的派生,因为我进行了编辑。正如我在描述中所写,它不会自动更改,这就是我设置触发器的原因。您对我如何重写以使其更“灵活”有任何假设吗?
标签: javascript google-apps-script