Sha*_*ton 15 formatting google-sheets google-apps-script
有人可以告诉我如何设计一个能够突出显示活动行的工作表脚本吗?
当该行中的一个单元格处于活动状态时,我希望整个行更改字体或背景颜色.
我不希望触发器是单元格中的任何特定值,只需单击一个单元格就可以触发单元格所属的整行的高亮显示.
谢谢!
Ed *_*son 23
抱歉,仅通过选择单元格无法通过条件格式或脚本完成此操作.但是,您可以使用组合键Shift-Spacebar突出显示活动单元格的整行.
onSelectionChange您可以像这样使用该事件。
就我而言,第一行中有一些标题单元格,它们有自己的背景颜色。如果您位于第 2 行或之后的行,我只会突出显示当前行。
function onSelectionChange(e) {
const range = e.range;
const sheet = range.getSheet();
const maxRows = sheet.getMaxRows();
const maxColumns = sheet.getMaxColumns();
// Clear the background color from all cells.
// (Except row 1 - that has my titles in it)
sheet.getRange(2, 1, maxRows - 1, maxColumns).setBackground(null);
// Don't set the background color if you're on the first row
if (range.getRow() > 1) {
// Highlight the current row
sheet.getRange(range.getRow(), 1, 1, maxColumns).setBackground("#c9daf8");
}
}
Run Code Online (Sandbox Code Playgroud)
更新需要一秒钟左右的时间 - 我猜该事件的触发有点慢。
这适用于桌面或触摸设备。
小智 5
我意识到这个问题是不久前被问到的,但是当我也在寻找同样的功能时我偶然发现了它。我的解决方案有点麻烦,并不是您正在寻找的完整解决方案,但它结合了一个小脚本和一些条件格式。
我首先使用 onEdit() 函数编写了一个小脚本:
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var targetCell = sheet.getRange('AD1');
var activeCell = e.range.getA1Notation();
targetCell.setValue(activeCell);
}
Run Code Online (Sandbox Code Playgroud)
我选择“AD1”作为目标单元格,因为它很远,如果需要,我也可以选择隐藏该列。
然后我转到条件突出显示并将其作为自定义公式输入:
=ROW()=ROW(INDIRECT($AD$1))
Run Code Online (Sandbox Code Playgroud)
瞧!每次我编辑一个单元格时,它都会自动突出显示整行。
这并不完全是您要查找的内容,因为它不会在您单击单元格后立即自动突出显示整行……仅在您编辑单元格时。此外,如果您正在运行其他公式和其他条件格式,您的电子表格可能会开始变慢。但这是我见过的最接近可能解决方案的方法。
不那么酷,但在易读性方面仍然有些功能,这是每隔一行的基本突出显示。例如:
在条件格式中: =ROW()=EVEN(ROW())