Google apps script 如何保护谷歌工作表中的条件格式?
我有两个CFs在一张纸上,我想在复制/粘贴时保留。你可以看到下面的范围和公式Google apps script 如何保护谷歌工作表中的条件格式?,google-apps-script,google-sheets,gs-conditional-formatting,google-sheets-conditionalformatting,Google Apps Script,Google Sheets,Gs Conditional Formatting,Google Sheets Conditionalformatting,我有两个CFs在一张纸上,我想在复制/粘贴时保留。你可以看到下面的范围和公式 CF1 Range : B3:H1001 CF1 Formula : =($A3<>"")*(B3="") //This one higlights the empty cells in a given range CF2 Range : A3:R1001 // This one highlights the row if the cell in R column is No. CF2 Formula
CF1 Range : B3:H1001
CF1 Formula : =($A3<>"")*(B3="") //This one higlights the empty cells in a given range
CF2 Range : A3:R1001 // This one highlights the row if the cell in R column is No.
CF2 Formula : =$R:$R="No"
CF1范围:B3:H1001
公式:=($A3”“)*(B3=”“)//此公式在给定范围内点亮空单元格
CF2范围:A3:R1001//如果R列中的单元格为“否”,则此区域将高亮显示该行。
公式:=$R:$R=“否”
是否有办法保护这些CFs或在复制粘贴后再次应用它们?谢谢
当我从另一个范围复制粘贴时,我将丢失已创建的条件格式。因此,我希望它们保持我格式化的状态,或者在复制/粘贴之后再次应用它们 从上面的回答中,我可以理解您希望保留条件格式,即
B3:H1001
的=($A3“)*(B3=”“)
和=$R:$R:$R=$R=“No”
的A3:R1001
,即使将范围复制并粘贴到B3:H1001
和A3:R1001
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一
问题和解决方法:
不幸的是,在当前阶段,没有直接保护GoogleApps脚本中的条件格式的方法。因此,在本例中,作为一种解决方法,我建议在使用OnChange事件触发器更改条件格式和单元格时覆盖条件格式
流量:
function onChange(e) {
const sheetName = "Sheet1"; // Please set the sheet name.
if (e.source.getActiveSheet().getSheetName() != sheetName || e.changeType != "OTHER") return;
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var rules = sheet.clearConditionalFormatRules();
const rule1 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("B3:H")])
.setBackground("green")
.whenFormulaSatisfied('=($A3<>"")*(B3="")').build();
const rule2 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("A3:R")])
.setBackground("green")
.whenFormulaSatisfied('=$R:$R="No"').build();
sheet.setConditionalFormatRules([rule1, rule2]);
SpreadsheetApp.flush(); // This line might not be required.
}
函数更改(e){
const sheetName=“Sheet1”//请设置图纸名称。
如果(e.source.getActiveSheet().getSheetName()!=sheetName | | e.changeType!=“其他”)返回;
const sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var规则=sheet.ClearConditionalFormatures();
const rule1=SpreadsheetApp.newConditionalFormature()
.setRanges([sheet.getRange(“B3:H”)]))
.挫折背景(“绿色”)
.WhenFormula满足('=($A3'')*(B3=“”)).build();
const rule2=电子表格app.newConditionalFormature()
.setRanges([sheet.getRange(“A3:R”)]))
.挫折背景(“绿色”)
.WhenFormula满足('=$R:$R=“否”).build();
表.设置条件格式([规则1,规则2]);
SpreadsheetApp.flush();//可能不需要此行。
}
- 在此示例脚本中,问题中的两种条件格式设置为绿色背景色
sheetName
中复制并粘贴范围。这样,脚本由OnChange事件触发器运行
注:
- 我认为也可以使用OnEdit事件触发器。但在这种情况下,当条件格式的参数更改时,事件触发器不会运行。所以我使用了OnChange事件触发器
当我从另一个范围复制粘贴时,我将丢失已创建的条件格式。因此,我希望它们保持我格式化的状态,或者在复制/粘贴之后再次应用它们 从上面的回答中,我可以理解您希望保留条件格式,即
B3:H1001
的=($A3“)*(B3=”“)
和=$R:$R:$R=$R=“No”
的A3:R1001
,即使将范围复制并粘贴到B3:H1001
和A3:R1001
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一
问题和解决方法:
不幸的是,在当前阶段,没有直接保护GoogleApps脚本中的条件格式的方法。因此,在本例中,作为一种解决方法,我建议在使用OnChange事件触发器更改条件格式和单元格时覆盖条件格式
流量:
function onChange(e) {
const sheetName = "Sheet1"; // Please set the sheet name.
if (e.source.getActiveSheet().getSheetName() != sheetName || e.changeType != "OTHER") return;
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var rules = sheet.clearConditionalFormatRules();
const rule1 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("B3:H")])
.setBackground("green")
.whenFormulaSatisfied('=($A3<>"")*(B3="")').build();
const rule2 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("A3:R")])
.setBackground("green")
.whenFormulaSatisfied('=$R:$R="No"').build();
sheet.setConditionalFormatRules([rule1, rule2]);
SpreadsheetApp.flush(); // This line might not be required.
}
函数更改(e){
const sheetName=“Sheet1”//请设置图纸名称。
如果(e.source.getActiveSheet().getSheetName()!=sheetName | | e.changeType!=“其他”)返回;
const sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var规则=sheet.ClearConditionalFormatures();
const rule1=SpreadsheetApp.newConditionalFormature()
.setRanges([sheet.getRange(“B3:H”)]))
.挫折背景(“绿色”)
.WhenFormula满足('=($A3'')*(B3=“”)).build();
const rule2=电子表格app.newConditionalFormature()
.setRanges([sheet.getRange(“A3:R”)]))
.挫折背景(“绿色”)
.WhenFormula满足('=$R:$R=“否”).build();
表.设置条件格式([规则1,规则2]);
SpreadsheetApp.flush();//可能不需要此行。
}
- 在此示例脚本中,问题中的两种条件格式设置为绿色背景色
sheetName
中复制并粘贴范围。这样,脚本由OnChange事件触发器运行
注:
- 我认为也可以使用OnEdit事件触发器。但在这种情况下,当条件格式的参数更改时,事件触发器不会运行。所以我使用了OnChange事件触发器