【发布时间】:2020-10-23 03:19:54
【问题描述】:
我有一个包含条件格式集合的时间表,可供多个用户使用,其中大多数用户并不精通技术。最简单的方法是允许他们拖动日程表框并剪切和粘贴,这不适用于条件格式。我意识到一种解决方案是告诉他们只复制和粘贴,但我正在尝试创建比这更强大的东西。
我的预期解决方案是在页面上放置一个按钮,该按钮将条件格式重置为同一工作簿中另一张工作表上的模板。计划更改后,将按下按钮:
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, 2, 9, 4, 28);
}
但是,我发现当我清除以前的格式然后插入模板格式时,条件格式的优先级不同,这给我带来了一些问题。我确实注意到新的优先级恰好是我应用条件格式的顺序,所以我可能会删除它们并以不同的顺序编写它们......
This is a screenshot before running code
This is a screenshot after running code
我正在寻找一种使用 Google Apps 脚本修改条件格式优先级的方法,可以通过在列表中将一个放在另一个上方拖动来手动更改该优先级。对此的任何帮助将非常非常感激!
【问题讨论】:
-
你能分享你用来运行脚本的电子表格吗?您的示例屏幕截图很奇怪,范围也发生了变化。它使用空工作表按我的预期工作。
-
编辑帖子以包含链接。感谢您的观看!
-
您的答案不正确,您报告的行为不可重现。您是否尝试过在全新的工作表中使用您的脚本?尝试在运行脚本之前从测试表中删除整个格式。
-
我不确定您在这种情况下所说的“可重现”是什么意思。
-
按照优先级顺序重新应用模板表中的条件格式是其他人可以在自己的表中复制的内容。如果他们提出不同的结果,我会很高兴看到它。在应用新格式之前,代码本身已经从测试表上的应用范围中清除了格式。问题假设测试表的格式会被其他用户搞砸,因此从干净的测试表开始是不够的。
标签: google-apps-script google-sheets conditional-formatting schedule