分组多个IF OR语句

时间:2020-07-28 03:54:20

标签: google-apps-script google-sheets

当从下拉列表中选择列标题名称时,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();
  }
}

这很好用,但是我现在想根据从下拉列表中选择的列标题名称更改升序的true / false条件。因此,我修改了脚本,目的是当从下拉列表中选择“分支”,“报告者”或“员工”时,所选列将升序排列,但是如果我要选择其他任何标题名称,那些按降序排列。这是我修改过的脚本,但无法正常运行:

//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});
  }
}

在其他工作表中,我能够修改代码并使代码在设置了一个条件的地方运行,例如如果等于“ Branch”,则升序排序;如果不等于“ Branch”,则降序排序,但是当我设置多个条件时,我无法使其正常工作。

我希望能获得一些帮助,以使其正常工作。

1 个答案:

答案 0 :(得分:1)

尝试一下:

{
    "dynamicLinkInfo":{
        "domainUriPrefix":"my_custome_domain_name",
        "link":"my_dynamic_link",
        "androidInfo":{
            "androidPackageName":"my_package_name",
            "androidFallbackLink":"https://play.google.com/store/apps/details?id=my_package_name",
            "androidMinPackageVersionCode":"2"
        },
        "navigationInfo":{
            "enableForcedRedirect":true,
        }
    },
    "suffix":{
        "option":"UNGUESSABLE"
    },
    "desktopInfo":{
        "desktopFallbackLink":"https://www.other-example.com/"
    }
}