我是脚本新手,最近发现以下脚本可以在编辑时使单元格闪烁或改变颜色。我想实现相同的脚本,但是对于一系列单元格。我试过ie:A7:A但它不起作用。我相信我在某个地方错过了一个论点。
function onEdit(e)
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mysheet = ss.getSheetByName("Sheet1");
var activeCell = ss.getActiveCell().getA1Notation();
if( activeCell == "A1" )
{
for(var i=0;i<50;i++)
{
if( i%2 == 0 )
mysheet.getRange("A1").setBackground("RED");
else
mysheet.getRange("A1").setBackground("WHITE");
SpreadsheetApp.flush();
Utilities.sleep(500);
}
}
}
答案 0 :(得分:1)
据我所知,如果编辑过的单元格在A7:A范围内,则需要闪烁。下面使用event object完成此操作,其中range属性指的是活动范围。
如果列为1且行&gt; = 7,则闪烁50次。 (顺便说一句,这意味着闪烁25秒。)
function onEdit(e) {
if (e.range.getColumn() == 1 && e.range.getRow() >= 7) {
for (var i = 0; i < 50; i++) {
e.range.setBackground(i % 2 ? "WHITE" : "RED");
SpreadsheetApp.flush();
Utilities.sleep(500);
}
}
}
如果您希望在编辑任何单元格时整个范围A7:A闪烁,则相关方法为setBackgrounds
,并且需要双倍颜色数组。需要首先准备此数组,因此代码变为
function onEdit(e) {
if (e.range.getColumn() == 1 && e.range.getRow() >= 7) {
var range = e.range.getSheet().getRange("A7:A");
var height = range.getHeight();
var whiteArray = Array.apply(null, Array(height)).map(function() {
return ["WHITE"];
});
var redArray = Array.apply(null, Array(height)).map(function() {
return ["RED"];
});
for (var i = 0; i < 50; i++) {
range.setBackgrounds(i % 2 ? whiteArray : redArray);
SpreadsheetApp.flush();
Utilities.sleep(500);
}
}
}
使用this answer中的数组填充方法。