google-apps-script - 当行有数据时有边框,但如果为空则没有边框
问题描述
我有一张要动态添加边框以过滤结果的工作表。我让它在添加边框的地方工作,但是当我选择另一个过滤器时,它会保留具有先前数据边框的行。因此,如果数据集较小,则它下面的所有边框都是空的。我将如何用这个脚本解决这个问题?
function onEdit(ss) {
var classeur = SpreadsheetApp.getActiveSpreadsheet();
var ss = classeur.getActiveSheet();
var range = ss.getRange("A5:a"); // Modified
range.setBorder(false, false, false, false, false, false);
var values = range.getValues();
var offsetRow = range.getRowIndex(); // Added
for (var i = 0; i < values.length; i++) {
if (values[i][0]) { // Modified
ss.getRange("A" + (i + offsetRow) + ":P" + (i + offsetRow))
.setBorder(true, true, true, true, true, true, "black",
SpreadsheetApp.BorderStyle.SOLID_MEDIUM) // Modified
.setBackground('#FFFFFF');
}
}
}
解决方案
试试这个:
function onEdit(e) {
var sh=e.range.getSheet();
sh.getRange(1,1,sh.getMaxRows(),sh.getMaxColumns()).setBorder(false, false, false, false, false, false);
var range = sh.getRange(5,1,sh.getLastRow()-4,1); // Modified
range.setBorder(false, false, false, false, false, false);
var values = range.getValues();
for (var i=0;i<values.length;i++) {
if (values[i][0]) { // Modified
sh.getRange(i+5,1,1,16).setBorder(true, true, true, true, true, true, "black",SpreadsheetApp.BorderStyle.SOLID_MEDIUM).setBackground('#FFFFFF');
}
}
}
除非您提供事件对象,否则您不能从脚本编辑器调用此函数。
推荐阅读
- mysql - DB查询:参数化值或附加值?
- python - 如何使用 Boto3 和 UserData 在 EC2 上预配置 AWS CLI
- c++ - 无法使用 QProcess 在 cmd.exe 中执行复制命令
- android - Fragment中的Android ImageView
- r - 如何将croston方法应用于数据集
- php - 如何在php中检查两个数组是否完全不同?
- c# - 如何更改底部标签的背景颜色
- google-bigquery - BQ:如何每次检查查询成本
- delphi - 为什么这个简单的代码不能在 ios 64 位上编译?
- javascript - else if 语句的 JavaScript 奇怪问题