Google apps script 无法读取属性";setColumnFilterCriteria“;空的

Google apps script 无法读取属性";setColumnFilterCriteria“;空的,google-apps-script,Google Apps Script,我用一些宏复制了一份电子表格。当我试图运行宏时,我得到下面的错误,即使我根本没有更改脚本 “setColumnFilterCriteria”在宏中出现多次,但这是第一次 samsara.getRange(1,B,maxrow,87).activate(); spreadsheet.getActiveSheet().showColumns(1, 87); samsara.getRange(2,G).activate(); var criteria = SpreadsheetApp.

我用一些宏复制了一份电子表格。当我试图运行宏时,我得到下面的错误,即使我根本没有更改脚本

“setColumnFilterCriteria”在宏中出现多次,但这是第一次

  samsara.getRange(1,B,maxrow,87).activate();
  spreadsheet.getActiveSheet().showColumns(1, 87);
  samsara.getRange(2,G).activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(G, criteria);var spreadsheet = SpreadsheetApp.getActive();

我认为筛选器位于最后一行的上方。

从您的错误消息
无法读取null的属性“setColumnFilterCriteria”
,我认为在您的情况下,工作表中可能没有筛选器。当工作表中不存在筛选器时,
spreadsheet.getActiveSheet().getFilter()
返回
null
。这样,就会出现这样的错误。那么下面的修改呢

发件人: 致:
  • 在此修改中,当过滤器不存在时,过滤器将作为新过滤器创建。当过滤器存在时,将修改现有过滤器
  • 在这次修改中,我使用
    sheet.getRange(2,G,sheet.getLastRow())
    作为过滤器的范围。当您的实际范围与它不同时,请修改它
参考资料:
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(G, criteria);var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var filter = sheet.getFilter();
if (filter) {
  sheet.getFilter().setColumnFilterCriteria(G, criteria);
} else {
  sheet.getRange(2, G, sheet.getLastRow()).createFilter().setColumnFilterCriteria(G, criteria);
}
var spreadsheet = SpreadsheetApp.getActive();