我正在使用执行不同类型的错误检查的Excel Javascript API设置条件格式。例如,如果用户在范围A1:A10中输入“ foo”或“ bar”以外的任何内容,则条件格式将以红色突出显示单元格。
我正在尝试编写一个函数,该函数返回以红色突出显示的A1:A10中所有单元格的列表无再次遍历数据并检查值是“ foo”还是“ bar”。我只想获取条件格式变为红色的单元格列表。
当我使用format/fill/color
加载range.getCellProperties()
属性时,即使条件格式将单元格填充显示为红色,它也会返回白色(#FFFFFF
)。条件格式评估后,如何获取单元格的填充颜色?
Click here for code会重现此问题。运行此命令的简便位置在Script Lab中。还在下面发布代码:
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
// setup
var rangeWithValues = sheet.getRange("A1:A5");
rangeWithValues.values = [["foo"], ["bar"], ["foo"], ["bar"], ["foo"]];
var conditionalFormatRange = sheet.getRange("A1:A10");
conditionalFormatRange.conditionalFormats.clearAll();
var conditionalFormat = conditionalFormatRange.conditionalFormats.add(Excel.ConditionalFormatType.custom);
conditionalFormat.custom.rule.formula = `=NOT(OR(A1="foo",A1="bar"))`;
conditionalFormat.custom.format.fill.color = "red";
await context.sync();
// get cell props
var rangeProps = conditionalFormatRange.getCellProperties({
address: true,
format: {
fill: {
color: true
}
}
});
await context.sync();
// output vals
rangeProps.value.forEach(rowProps => {
rowProps.forEach(cellProp => {
console.log("address: " + cellProp.address + "; fill color: " + cellProp.format.fill.color);
})
})
});
RangeFormat
API可以获取范围格式,但不能获取conditionalFormat
,因为conditionalFormat并未更改实际范围格式,因此无论您更改哪种颜色,都可以尝试在UI中更改A8的背景颜色,它显示为红色(条件格式颜色)。
因此,这将是一个新的请求,用于检测范围的显示格式,因此,我建议您可以以[uservoice]提交请求,并在https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=163563处对此功能进行投票。并为此功能投票。感谢您的支持