谷歌电子表格脚本眨眼的单元格范围

Google Spreadsheet Script to Blink a range of Cells

本文关键字:单元格 范围 电子表格 脚本 谷歌      更新时间:2023-09-26

我是新的脚本,最近发现下面的脚本,使单元格闪光或改变颜色时编辑。我想实现相同的脚本,但细胞的范围。我试过了,但是行不通。我想我遗漏了一个论点。

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);
    }
  }
}

我知道你想要编辑的单元格闪烁,如果它在范围A7:A。这是在下面使用事件对象完成的,其中范围属性引用活动范围。

如果列为1,行>= 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);
    }
  }
}