【发布时间】:2026-01-18 05:15:02
【问题描述】:
我想使用条件格式为 Google 表格中的单元格添加边框。我知道您无法使用 Google 表格中的标准条件格式化过程来执行此操作,因此我正在尝试掌握如何使用脚本来执行此操作。
我从以下解决方案中复制了一个脚本,并尝试根据需要对其进行编辑:(Add border format to row if condition met in Google Sheets)
但是,我仍然对这些脚本的工作方式有所了解,并且还无法按预期进行。
想要的效果是,对于所有第 5 行及更高的行,其中 A 不为空,边框应应用于 A 到 M 列中的所有单元格。工作表称为“套件检查列表”,脚本应为每当对工作表进行编辑时触发。
这是我目前的尝试
function onEdit() {
GroupMyData(); // trigger this function when edits are made
}
function GroupMyData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Kit check list'); // apply to sheet name only
var rows = sheet.getRange('A5:M'); // range to apply formatting to
var numRows = rows.getNumRows(); // no. of rows in the range named above
var values = rows.getValues(); // array of values in the range named above
var testvalues = sheet.getRange('a5:a').getValues(); // array of values to be tested (1st column of the range named above)
rows.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID); // remove existing borders before applying rule below
//Logger.log(numRows);
for (var i = 0; i <= numRows - 1; i++) {
var n = i + 1;
//Logger.log(n);
//Logger.log(testvalues[i] > 0);
//Logger.log(testvalues[i]);
if (testvalues[i] > 0) { // test applied to array of values
sheet.getRange('a' + n + ':m' + n).setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID); // format if true
}
}
};
不幸的是,它只重置了指定区域的边框,并没有将边框应用于所需的行。
对此的任何帮助将不胜感激。
【问题讨论】:
-
我建议您考虑使用背景颜色而不是边框。如果可能的话,当然可以。使用 Google App Script,您可以比边框更轻松地处理背景。至少现在。
-
感谢颜色而不是边框的建议。在我制作的电子表格中,我不太使用边框,但是在这种情况下,电子表格用于生成可打印的表单,其中包含供人们写入的字段网格,因此边框更合适。
标签: google-apps-script google-sheets spreadsheet conditional-formatting