google-apps-script - 当特定单元格更改时自动刷新过滤器

标签 google-apps-script google-sheets

我在 A 列中有一个简单的公式,根据单元格 I3 的值对行返回 True 或 False。目前,每次更改单元格 I3 的值时,我都必须手动转到过滤器并选择“确定”来刷新它。这可以通过对单元格 I3 进行任何编辑来触发的脚本来运行吗?

https://docs.google.com/spreadsheets/d/1H2lkC-rQKjdL_7A8t0_mNNzk4OJr0iQi0wsja0rQ-7w/edit#gid=893032115

最佳答案

是的,如果单元格 I3 被编辑,您可以自动执行过滤器。我不是过滤器(尤其是脚本化过滤器)方面的专家,因此我创建并重新使用了一个宏。

  1. 创建一个宏来选择过滤器并“选择是”。将宏重命名为有意义的名称。
  2. 创建 onEdit(e) 脚本。评估单元格I3是否被编辑;如果是,则运行宏

function onEdit(e){

  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheetname = "P&L";
  var sheet = ss.getSheetByName(sheetname);
  var erow = e.range.getRow();
  // Logger.log("DEBUG: row = "+erow);
  var ecolumn = e.range.getColumn();
  // Logger.log("DEBUG: column = "+ecolumn);
  if (erow == 3 || ecolumn == 8 ){
    // there is a match so the cell is I3
    // Logger.log("DEBUG: the cell is I3");
    updatefilter();
  }
  else
  {
    // there is no match so the cell is NOT I3
    //Logger.log("DEBUG: the cell is not I3");
  }

}

function updatefilter() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('V3').activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
  .setHiddenValues(['', 'No'])
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(22, criteria);
};

关于google-apps-script - 当特定单元格更改时自动刷新过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56665954/

相关文章:

google-apps-script - 如何从带有占位符的模板创建新文档

google-sheets - 为什么有时无法编辑 Google 表格公式行间距?

google-apps-script - 向数据透视表添加过滤器

django - 如何使用 django modelform 通过复制/粘贴上传图像?

javascript - Google 脚本中的数组覆盖问题

google-app-engine - Google App 脚本/Gmail 附加组件 : How to display a window with text and buttons over Gmail?

google-apps-script - Google 表格脚本 |我可以通过脚本公式访问单元格编辑历史记录吗?

javascript - Google Apps 脚本 - 根据单元格中的日期发送电子邮件

typescript - 将 Typescript 与 Google Apps 脚本结合使用

javascript - 删除或忽略数组中的空单元格