【问题标题】:how do i filter by date using google script?如何使用谷歌脚本按日期过滤?
【发布时间】:2021-06-09 08:38:35
【问题描述】:

我需要根据今天的日期过滤我的电子表格。 这是我使用的代码:

function myFunction() {
  var SS = SpreadsheetApp.openById("19nlPw9jF8FCFwY-qYwdBILoGDazrH12c8BgYfhwWSKA");
  var Sheet = SS.getSheetByName("All Joiners");
  var Jun = SS.getSheetByName("01 Jun");
  var data = Sheet.getRange(2, 1,Sheet.getLastRow(),Sheet.getLastColumn()).getValues();

  var criteria = SpreadsheetApp.FilterCriteriaBuilder.whenDateEqualTo(new Date(Jun.getRange("A1")))
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);

}

【问题讨论】:

  • new Date() 适合你吗?
  • 你能澄清一下单元格A1 中的值是什么吗?另外,您希望日期完全相同还是只是同一天?
  • 单元格 A1 中的值可以是任意日期。最常见的是今天的日期来过滤今天的数据。
  • no new Date( ) 似乎不起作用。

标签: javascript google-apps-script spreadsheet


【解决方案1】:

一些事情-

  • 您的代码在 6 月检索单元格 A1 的 范围 - 您还需要 获取价值
  • FilterCriteriaBuilder 不是一个函数,并且 应该是 newFilterCriteria()。
  • spreadsheet.getActiveSheet() 应该 是 SS.getActiveSheet,因为您将其声明为 SS

原代码:

var criteria = SpreadsheetApp.FilterCriteriaBuilder.whenDateEqualTo(new Date(Jun.getRange("A1"))).build(); 
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria); 

应该是:

let criteria = SpreadsheetApp.newFilterCriteria().whenDateEqualTo(new Date(Jun.getRange("A1").getValue())).build();    
SS.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);

另外,附注 - 您声明了 Sheet 但没有使用它。如果您的意图是更新该特定工作表上的列过滤器,而不是当前活动工作表,那么应该是 SS.getActiveSheet(),而不是:

Sheet.getFilter().setColumnFilterCriteria(4, criteria);

如果您的工作表当前没有过滤器,您必须创建它。为此,请检索要应用过滤器的Range,然后调用Range.createFilter()。所以这条线就像(Range 是你想要的范围):

Range.createFilter().setColumnFilterCriteria(4, criteria);

此外,如果您的A1 单元格是Date(而不是格式类似于日期的字符串),则在设置条件时无需使用new Date()

const criteria = SpreadsheetApp.newFilterCriteria().whenDateEqualTo(Jun.getRange("A1").getValue()).build();

【讨论】:

  • 您好,感谢您的建议,在尝试此操作时,我收到一条错误消息,内容为 - “TypeError: Cannot read property 'setColumnFilterCriteria' of null myFunction”
  • @AbhijithP 这意味着您当前的工作表中没有过滤器。为了创建它,检索您想要应用过滤器的Range,然后调用Range.createFilter()。所以整行是Range.createFilter().setColumnFilterCriteria(4, criteria);。此外,如果您的A1 单元格是Date(而不是格式化为日期的字符串),则在设置条件时无需使用new Date()whenDateEqualTo(Jun.getRange("A1").getValue())
猜你喜欢
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多