需要脚本来检测单元格的数值何时发生变化,并更改行颜色

时间:2016-04-04 14:24:48

标签: google-sheets google-spreadsheet-api

我目前正在使用Google表格创建一个库存盘点系统,而且我已经在最后的障碍中遇到了问题。我使用条件格式来调整行的颜色等...当从"在购物车上更新时选择了某个下拉选项?"列,但我需要一个脚本(因为这不可能只使用条件格式)来检测" QTY"单元格已更改/从其当前值更新(更改为任何内容,而不仅仅是特定值)。

我已经浏览了25页Google,以及StackOverflow上的无数帖子,但无济于事。

这是系统目前的图像。

Image of stock sheet

所以基本上当用户更改库存商品的数量时,该行应该改变颜色。

如果有人知道我可以使用的脚本,或者可以指出我在Google电子表格解决方案的正确方向上会很棒。

1 个答案:

答案 0 :(得分:0)

某些脚本可以提供帮助:

function onEdit(t) {

var workSheetName = 'Sheet1'; // change sheet name to yours
var targetRangeAddress = 'E2:E'; // change if needed

var ss = SpreadsheetApp.getActiveSheet();
var sn = ss.getName();

if (sn == workSheetName) {
  var myr = ss.getRange(targetRangeAddress);
  var tr = t.range;
  if (t.oldValue != tr.getValue() && t.oldValue != undefined) {
  if (RangeIntersect(tr, myr)) {
      var cr = ss.getRange(tr.getRow(),1,1,ss.getLastColumn());
      cr.setBackgroundRGB(200, 200, 200); // change if needed
    }
  }
}
}


function RangeIntersect(R1, R2) {

  var LR1 = R1.getLastRow();
  var Ro2 = R2.getRow();
  if (LR1 < Ro2) return false;


  var LR2 = R2.getLastRow();
  var Ro1 = R1.getRow();
  if (LR2 < Ro1) return false;

  var LC1 = R1.getLastColumn();
  var C2 = R2.getColumn();
  if (LC1 < C2) return false;

  var LC2 = R2.getLastColumn();
  var C1 = R1.getColumn();
  if (LC2 < C1) return false;

return true;

}

或者可能只是将列(E:E)值复制到它旁边的库(F:F)并使用您的公式为所有表格范围设置条件格式规则:{{1} }