比较用户更改后的值

时间:2018-03-21 12:48:56

标签: google-apps-script google-sheets

我有一个函数,每当“K”列发生变化时触发(由OnEdit(e)函数调用)。 实质上,本专栏负责收集特定呼叫是开放还是关闭的信息(这是一个CRM系统)

这段代码工作得很好,但是比较的信息是错误的 - 如果值是“关闭”的话,则在用户更改此值后进行比较,使其变得无关紧要。

有没有办法在用户实际更改值之前进行比较?或者可能将它与更改前的值进行比较?

function isClosedColumnChanged(e)
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //Get Active cell
  var mycell = ss.getActiveSelection();
  var cellrow = mycell.getRow();
  var isClosed = 'K' + (cellrow);

  if (cellcol == 11)
  {

    if (sheet.getRange(isClosed).getValue() == "closed")
    {
      messageit('its forbidden to close already-closed call');
    }
  }
}

1 个答案:

答案 0 :(得分:1)

请查看编辑后触发器对象:https://developers.google.com/apps-script/guides/triggers/events#edit

尝试从

更改
if (cellcol == 11)
{
  if (sheet.getRange(isClosed).getValue() == "closed")
  {
    messageit('its forbidden to close already-closed call');
  }
}

if (e.range.getColumn() == 11) // If edited column is 11
{
  //If new value is closed and oldValue is also closed
  if (e.value == "closed" && e.oldValue == "closed")
  {
    messageit('its forbidden to close already-closed call');
  }
}

注意:只应编辑一个单元格以使用e.valuee.oldValue

  

oldValue :编辑前的单元格值(如果有)。仅在编辑范围是单个单元格时可用。如果单元格没有以前的内容,将不确定。

     

:编辑后的新单元格值。仅在编辑范围是单个单元格时可用。