【发布时间】:2015-02-19 11:44:43
【问题描述】:
我正在使用 GDrive 电子表格和 Google 应用脚本。我需要更改所有单元格的格式和背景颜色,并且需要以编程方式进行。以下代码效果很好:
ss.getRange(1, 1, ss.getLastRow(), ss.getLastColumn()).setNumberFormat("@STRING@").setBackground("cyan");
唯一的问题是它仅适用于可见的行/列 - 即,如果您根据特定列值过滤工作表,则上面的代码将仅适用于当前显示的行。
例如,我有以下电子表格
我继续在第二列添加过滤器:
如您所见,我选择在 zxc 值上过滤第二列。现在我需要使用谷歌应用脚本将电子表格的单元格格式化为青色背景。代码如下:
function testFormat(){
var id = "theIdOfMySpreadsheet";
var sheet = SpreadsheetApp.openById(id);
var ss = sheet.getSheets()[0];
ss.getRange(2, 1, ss.getLastRow() - 1, ss.getLastColumn()).setBackground("cyan");
}
这是电子表格上的结果:
一切似乎都很好。但是看看如果我删除过滤器会发生什么:
5 行中只有 2 行具有正确的背景颜色,即使我已将其设置在 整个 范围内。我已经测试了返回范围的长度,它可以正常工作,因为它返回 5 行和 3 列。
你们中有人遇到过这个问题吗?如何强制它更改过滤出的行的背景?
【问题讨论】:
标签: google-apps-script formatting google-sheets