Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 比较用户更改后的值_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 比较用户更改后的值

Google apps script 比较用户更改后的值,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个触发它的函数,每当“K”列发生变化时,OnEdite函数就会调用它。 从本质上讲,本专栏负责收集特定呼叫是打开还是关闭的信息—这是一个CRM系统 这段代码工作得很好,但是比较的信息是错误的-如果值“关闭”或“未关闭”,则在用户更改此值后进行比较,因此它变得不相关 在用户实际更改值之前,是否有任何方法进行此比较?或者将其与更改前的值进行比较 function isClosedColumnChanged(e) { var ss = SpreadsheetApp.getActiveSpre

我有一个触发它的函数,每当“K”列发生变化时,OnEdite函数就会调用它。 从本质上讲,本专栏负责收集特定呼叫是打开还是关闭的信息—这是一个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');
    }
  }
}

请查看编辑触发器对象上的:

试着从

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

注意:只需编辑一个单元格即可使用e.value和e.oldValue:

oldValue:编辑前的单元格值(如果有)。仅当编辑的区域是单个单元格时可用。如果单元格没有以前的内容,则将未定义

值:编辑后的新单元格值。仅当编辑的区域是单个单元格时可用


在尝试确定新值和旧值时,在on edit函数中引用活动单元格/活动工作表是不正确的。使用事件对象!
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');
  }
}