google-apps-script - 应用脚本条件格式按名称应用于工作表
问题描述
我一直在尝试制作一个谷歌应用脚本代码,如果它有特定的文本,比如“L”,它会突出显示单元格。
我制作了下面的代码,但它不起作用,当我运行它时没有出现错误。我不知道是什么问题。
你能看看它,请说明它为什么不起作用。
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dec');
var range = sheet.getRange("C:AG");
if (range == 'L') {
ss.range.setBackgroundColor('#ea9999');
}
}
解决方案
代码问题:
需要提三件事:
range
是范围对象,而不是字符串。在这种if
情况下,您将 typerange
的对象与type 的对象进行比较string
。您需要使用getValue来获取range
对象的值,然后将其与 string 进行比较L
。这段代码需要很长时间才能完成,因为您要检查的单元格范围很大,而且您正在迭代地使用
GAS
API 方法。正如最佳实践中所解释的,使用getValues、 getBackgrounds和setBackgrounds等批处理操作效率更高。您可以进行的另一项改进是使用getLastRow来限制范围的行限制,因为您正在寻找非空值。没有理由在最后一行内容之后检查空单元格。
Google Apps 脚本解决方案:
function formatting() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dec');
const range = sheet.getRange("C1:AG"+sheet.getLastRow());
const values = range.getValues();
const bcolors = range.getBackgrounds();
const new_bcolors = values.map((r,i)=>r.map((c,j)=>c=='L'?'#ea9999':bcolors[i][j]))
range.setBackgrounds(new_bcolors)
}
谷歌表格解决方案:
另一个想法是在 Google 表格中创建一个条件格式:
并使用您的十六进制代码指定自定义颜色:
JavaScript 参考:
推荐阅读
- python - 如何使用 selenium Web 驱动程序托管由 Web 抓取提供支持的后端服务?
- perl - 从 .perldb 初始化文件设置断点
- javascript - 为什么下面的代码会导致超时?
- keras - 带有 LPRNet 和 CTCLoss 的 pytorch/keras 中的 OCR 不收敛
- android - 集成 Firebase crashlytics 和 Fabric 依赖项时资源重复
- azure - 如果我们每天使用几分钟,Azure 自动化帐户将花费多少?
- corda - 需要有关要在“FLOW”中编写的代码的帮助
- excel - VBA 填充工作表
- docker - 在 Jenkins 中使用 govc 容器
- c# - 将主键 [Key] 添加到 ADO.NET 生成的表类