我对编码非常陌生,很可能会提供简单脚本的支持。
我想创建一个每天触发的脚本,该脚本按条件在几个不同的列上进行过滤。
我已经在网上搜索过,只能找到有关排序的帮助。在按条件过滤时,我似乎找不到答案。
我想将D列(状态)过滤到任何不具有值'Closed'的单元格,并且还希望过滤T列(范围)以仅具有值'Strategic'
然后按第一列对该范围进行排序。 (我相信我已经取得了以下成就) 然后,我想每天对此进行一次触发,然后再进行设置。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data Studio")
var range = ss.getRange(2, 1, sheet.getLastRow()-1, ss.getLastColumn())
range.sort([{column: 1, descending: false}]);}
答案 0 :(得分:0)
不是那么简单。您需要使用不是最直观的filter和filterBuilder。这是入门的基本代码。根据您的需要进行修改。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data Studio");
var range = ss.getRange(2, 1, sheet.getLastRow()-1, ss.getLastColumn());
// Get the existing filter, else create one for this range. May need to just
// remove all filters first in case they conflict.
var filter = range.getFilter() || range.createFilter();
var column_Status = 4; // column D
var filterCriteria_Status = SpreadsheetApp.newFilterCriteria()
.whenTextDoesNotContain('Closed')
.build();
var column_Scope = 20; // column T
var filterCriteria_Scope = SpreadsheetApp.newFilterCriteria()
.whenTextContains('Strategic')
.build();
var column_to_sort = 1;
filter.setColumnFilterCriteria(column_Status, filterCriteria_Status)
.setColumnFilterCriteria(column_Scope, filterCriteria_Scope)
.sort(column_to_sort, true);
}
通过菜单非常简单地设置每日触发器:“编辑”>“当前项目的触发器”。
答案 1 :(得分:0)
以下是对我有用的代码(因为我本人无法使所接受的答案中所示的解决方案正常工作):
function onEdit(e){
var ss = e.source.getActiveSheet()
var ra = e.range
var erow = e.range.getRow()
var ecolumn = e.range.getColumn()
// name of the sheet + coordinates of the searchbox (here is A1)
if (erow == 1 && ecolumn == 1 && ss.getName()=="Sheet1" ){
var val = ra.getValue()
var rang = ss.getDataRange();
var filterCriteria = SpreadsheetApp
.newFilterCriteria()
.whenTextContains(val)
.build();
var filter = rang.getFilter() || rang.createFilter();
filter.setColumnFilterCriteria(3, filterCriteria); // column to search = 3
}
}
干杯, 吉恩