Google Sheets条件格式提取脚本报错:getCondition不是函数
解决思路
1. 修正API方法调用
getCondition() 是旧版Google Sheets API对应的方法,当前新版Apps Script中已被拆分,需根据条件格式的类型调用对应方法:
- 布尔逻辑类规则(如单元格值大于指定数):用
conditionalFormattingRule.getBooleanCondition() - 渐变填充类规则:用
conditionalFormattingRule.getGradientCondition() - 自定义公式类规则:用
conditionalFormattingRule.getCustomFormulaCondition()
示例提取代码片段:
function extractConditionalFormatting(sheetName) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); var rules = sheet.getConditionalFormatRules(); var storedRules = []; rules.forEach(rule => { var ruleData = { ranges: rule.getRanges().map(range => ({ rowStart: range.getRow(), rowEnd: range.getLastRow(), colStart: range.getColumn(), colEnd: range.getLastColumn() })) }; // 匹配对应规则类型并提取数据 const boolCond = rule.getBooleanCondition(); const gradCond = rule.getGradientCondition(); const formulaCond = rule.getCustomFormulaCondition(); if (boolCond) { ruleData.type = "boolean"; ruleData.conditionType = boolCond.getConditionType(); ruleData.values = boolCond.getValues(); ruleData.format = boolCond.getFormat(); } else if (gradCond) { ruleData.type = "gradient"; ruleData.minpoint = gradCond.getMinpoint(); ruleData.maxpoint = gradCond.getMaxpoint(); } else if (formulaCond) { ruleData.type = "customFormula"; ruleData.formula = formulaCond.getFormula(); ruleData.format = formulaCond.getFormat(); } storedRules.push(ruleData); }); // 将规则存储到脚本属性中 PropertiesService.getScriptProperties().setProperty('storedRules', JSON.stringify(storedRules)); }
2. 重应用规则的对应逻辑
恢复规则时,需根据存储的规则类型调用对应创建方法:
- 布尔规则:
SpreadsheetApp.newBooleanCondition() - 渐变规则:
SpreadsheetApp.newGradientCondition() - 自定义公式规则:
SpreadsheetApp.newCustomFormulaCondition()
3. 根源规避方案
- 限制编辑权限:通过Sheets的「保护范围」功能,仅开放必要编辑区域,禁止全表复制粘贴操作
- 定时自动恢复:设置时间驱动触发器,定期运行规则重应用脚本,避免规则丢失
内容的提问来源于stack exchange,提问作者bowow99
相关产品推荐
相关产品推荐

