我有一个函数,每当“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');
}
}
}
答案 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.value
和e.oldValue
:
oldValue :编辑前的单元格值(如果有)。仅在编辑范围是单个单元格时可用。如果单元格没有以前的内容,将不确定。
值:编辑后的新单元格值。仅在编辑范围是单个单元格时可用。