【问题标题】:Make custom function refresh使自定义函数刷新
【发布时间】:2016-02-08 02:14:35
【问题描述】:

所以我有一个代码,它接受一个范围和一个参考单元格,并返回具有与参考相同背景颜色的单元格的数量。这很好用,但我希望它在某些单元格的颜色发生变化时可用。我将它放在基于每分钟时间的触发器上,并尝试使用SpreadsheetApp.flush() 取消缓存当前号码。这没有达到预期的效果。

我还尝试创建第二个使用 flush() 的函数,然后返回第一个函数。这也没有奏效。我知道让它刷新的唯一方法是从单元格的开头获取“=”,然后替换它。有效的代码如下。

function countBGColor(range, ref) {

    var sheet = SpreadsheetApp.getActiveSheet();
    var color = sheet.getRange(ref).getBackground();
    var range = sheet.getRange(range);
    var rangeVal = range.getValues();
    var count = 0;
    var allColors = range.getBackgrounds();
    for (var i = 0; i < allColors.length; i++) {
        for (var j = 0; j < allColors[0].length; j++) {
            if (allColors[i][j] == color) count += 1;
        };
    };
    return count;
}

【问题讨论】:

    标签: google-apps-script google-sheets triggers


    【解决方案1】:

    我找不到直接的方法来做到这一点。但是您可以制作清除公式然后将其重新输入单元格的脚本:

    function Refresh() {
    
      var sheet = SpreadsheetApp.getActiveSheet();
      var range = sheet.getRange('D1');
      range.clear();
      SpreadsheetApp.flush();
     range.setFormula('=countBGColor("A1:A10","E1")');
    } 
    

    接下来将您的图片链接到脚本的函数:图片右上角菜单中的Insert &gt; image &gt;Assign Script

    Sample file:

    【讨论】:

    • 天哪!非常感谢!这完美!我把它放在 onChange() 触发器上,所以现在它跟上了一切。
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2015-10-29
    • 2011-05-23
    • 2021-04-13
    相关资源
    最近更新 更多