谷歌电子表格脚本闪烁一系列单元格

时间:2016-06-28 02:52:43

标签: javascript google-apps-script google-sheets triggers

我是脚本新手,最近发现以下脚本可以在编辑时使单元格闪烁或改变颜色。我想实现相同的脚本,但是对于一系列单元格。我试过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);
    }
  }
}

1 个答案:

答案 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中的数组填充方法。