【发布时间】:2020-07-28 12:27:47
【问题描述】:
Cooper 编写了以下 onEdit 脚本来在从下拉列表中选择列标题名称时对列进行排序:
//Dropdown List sort Events/Incidents
function sortByColumnEventsIncidents(e) {
const sh=e.range.getSheet();
if(sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value) {
const headerArray=sh.getRange(2,1,1,sh.getLastColumn()).getValues()[0];
const col={};
headerArray.forEach(function(h,i){col[h]=i+1;});
const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn());
rg.sort({column:col[e.value],ascending:false});
sh.getRange('A3').activate();
}
}
这非常有效,但我现在想根据从下拉列表中选择的列标题名称更改升序真/假标准。因此,我修改了脚本,目的是当从下拉列表中选择“分支”、“报告者”或“员工”时,所选列将按升序排序,但如果选择了任何其他标题名称,我想要那些要降序排序的。这是我修改后的脚本,但我无法让它发挥作用:
//Dropdown List sort Events/Incidents
function sortByColumnEventsIncidents(e) {
const sh=e.range.getSheet();
if(sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value=='Employee' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value=='Reported by' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value=='Branch') {
const headerArray=sh.getRange(2,1,1,sh.getLastColumn()).getValues()[0]; //Location of Header row
const col={};
headerArray.forEach(function(h,i){col[h]=i+1;});
const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn()); //Range to sort
rg.sort({column:col[e.value],ascending:true});
sh.getRange('A3').activate();
}
if(sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value!=='Employee' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value!=='Reported by' || sh.getName()=='Events/Incidents' && e.range.columnStart==5 && e.range.rowStart==1 && e.value!=='Branch') { //Location of Dropdown = E1
const headerArray=sh.getRange(2,1,1,sh.getLastColumn()).getValues()[0]; //Location of Header row
const col={};
headerArray.forEach(function(h,i){col[h]=i+1;});
const rg=sh.getRange(3,1,sh.getLastRow()-2,sh.getLastColumn()); //Range to sort
rg.sort({column:col[e.value],ascending:false});
}
}
在其他工作表中,我已经能够修改代码并使其在我设置了一个标准的情况下运行,例如如果等于“分支”,则升序排序,如果不等于“分支”,则降序排序,但是当我设置多个条件时,我无法让它工作。
如果能帮我解决这个问题,我将不胜感激。
【问题讨论】:
标签: google-apps-script google-sheets