如何用Office Scripts快速提取Excel单元格区域填充色至数组?
无需循环快速提取Excel区域填充色到数组的方法
你当前的代码无效,核心原因是getFormat().getFill().getColor()仅适用于单个单元格或格式完全统一的区域——如果目标区域内单元格填充色不一致,该方法会返回null或默认值,无法获取每个单元格的独立颜色。
目前Excel JavaScript API没有像getValues()那样直接返回区域填充色数组的方法,但可以用getCellProperties()实现高效批量获取,性能远优于逐单元格循环:
let sheet = workbook.getWorksheet('Sheet1'); let targetRange = sheet.getRange('A5:F35'); // 批量获取区域内所有单元格的填充色属性 let cellProperties = targetRange.getCellProperties({ fill: { color: true } }); // 转换为纯填充色值的二维数组(结构与getValues()返回的一致) let fillColors = cellProperties.map(row => row.map(cell => cell.fill.color));
关键说明:
getCellProperties()支持指定要获取的属性子集(这里仅请求填充色),避免冗余数据,大幅提升处理效率- 返回的
cellProperties是和目标区域行列对应的二维数组,每个元素包含对应单元格的填充色信息 - 通过两次
map转换,就能得到和getValues()结构完全匹配的填充色数组,无需手动遍历每个单元格
内容的提问来源于stack exchange,提问作者Griatsala
相关产品推荐
相关产品推荐

