更改Google App脚本中的条件格式优先级

问题描述

我有一个时间表,其中包含条件格式的集合,这些格式将由多个用户使用,其中大多数用户都不精通技术。允许他们在周围拖移时间表框并剪切和粘贴,这是最简单的,这不适用于条件格式。我意识到一种解决方案是告诉他们仅复制和粘贴,但是我正在尝试创建比这更强大的功能

我想要的解决方案是在页面上放置一个按钮,该按钮仅将条件格式重置为同一工作簿中另一张纸上的模板。更改时间表后,将按下按钮:

function passConditionalFormat(sourceSheetName,targetSheetName) {
      //Check what spreadsheet we're using
      var ss = SpreadsheetApp.getActive();
  
      //The source of data formatting rules
      var sourceSheet = ss.getSheetByName("Safety Sheet");
  
  //(start row,start column,#of rows to grab,#of columns to grab)
  var sourceRange = sourceSheet.getRange(4,2,25,8);
  
      //The target sheet of data formatting rules
      var targetSheet = ss.getSheetByName("test sheet");
      //Set target range
      var targetRange = targetSheet.getRange("B4:I28");
  
      //clear formatting in target sheet area
      targetRange.clearFormat();
      
      //(column,columnEnd,row,rowEnd)
      sourceRange.copyFormatToRange(targetSheet,9,4,28);
  
    }

但是,我发现当我清除前一种格式,然后插入模板格式时,条件格式的优先级有所不同,这给我带来了一些问题。我 did 注意到新的优先级恰好是我应用条件格式的顺序,所以我可能只是删除它们并以不同的顺序写它们...

This is a screenshot before running code

This is a screenshot after running code

我正在寻找一种使用Google Apps脚本修改条件格式设置优先级的方法,可以通过在列表中的另一个上方拖动来手动更改条件格式设置优先级。在这方面的任何帮助将非常非常感谢!

解决方法

据我所知,App Script无法访问条件格式的优先级。

Alessandro坚持认为copyFormatToRange将复制格式的优先级以及条件格式本身。尽管我不能完全否定这个假设,但我可以指出,就我而言,条件格式的优先级已更改,我不知道其他原因。

以下是实现我的特定目标的一种方法,尽管它没有我想要的强大。 看来copyFormatToRange会将条件格式按照最初创建的顺序应用于新范围:第一个创建的cond。格式具有最高优先级。 因此,我最终在模板表中重新应用了我想要的条件格式,但是按照我想要的顺序。