gpt4 book ai didi

javascript - 是否有一个事件在编辑单元格时触发,但值没有改变?

转载 作者:行者123 更新时间:2023-11-28 06:09:51 24 4
gpt4 key购买 nike

我正在为我们的商店开发销售跟踪器。我们用销售跟踪器记录我们的销售情况,我有一个根据 Stack Overflow 上的问题答案改编的方法(不幸的是,我目前没有可以将其归因于的链接或用户!)用于编辑细胞,而不必在心里添加如下所示的数量。

 function onEdit(e) {


var editRange = { // C5:O13
top : 5,
bottom : 13,
left : 12,
right : 12
};

//Checks if last value was not a number to avoid loop
if (isNaN(e.value) == true) {
return;
}

if (isNaN(e.oldValue) == true) {
var newValue = parseInt(e.value);
} else {
var newValue = parseInt(e.value) + parseInt(e.oldValue);
}

// Exit if we're out of range
var thisRow = e.range.getRow();
if (thisRow < editRange.top || thisRow > editRange.bottom) return;

var thisCol = e.range.getColumn();
if (thisCol < editRange.left || thisCol > editRange.right) return;

var posRow = parseInt(thisRow);
var posCol = parseInt(thisCol);

// We're in range
var ss = e.range.getSheet();
ss.getRange(posRow, posCol).setValue(newValue);

} ​

这使得销售设备(例如值(value) 645 美元)的人可以通过在单元格上输入当前销售额来添加当前金额(例如 450 美元)。该代码获取旧金额,将其添加到新金额中,然后将其保存回单元格中。

当当前销售值(value)与新销售值(value)相同时(例如,当前销售 500 美元,而我们刚刚再次销售 500 美元),就会出现问题。这些值没有更改,因为在单元格中输入了相同的值,并且 onEdit() 和 onChange() 函数不会触发。有什么解决办法吗?

最佳答案

我建议通过简单的操作来模拟一个事件:复制粘贴单元格以将其加倍:

  • 转到单元格
  • 复制:Ctrl + C
  • 粘贴:Ctrl + V此操作将触发脚本。

代码如下:

function onEdit(e) {

var editRange = { // L5:L13
top : 5,
bottom : 13,
left : 12,
right : 12
};

var oldValue, newValue;

// check if object was changed
if (e.value == "[object Object]") {
oldValue = e.range.getValue();
newValue = oldValue;
}
else {
oldValue = e.oldValue;
newValue = e.value;
}


//Checks if last value was not a number to avoid loop
if (isNaN(newValue) == true) {
return;
}

if (isNaN(oldValue) == true) {
var newValue = parseInt(newValue);
} else {
var newValue = parseInt(newValue) + parseInt(oldValue);
}

// Exit if we're out of range
var thisRow = e.range.getRow();
if (thisRow < editRange.top || thisRow > editRange.bottom) return;

var thisCol = e.range.getColumn();
if (thisCol < editRange.left || thisCol > editRange.right) return;

var posRow = parseInt(thisRow);
var posCol = parseInt(thisCol);

// We're in range
var ss = e.range.getSheet();
ss.getRange(posRow, posCol).setValue(newValue);

}

关于javascript - 是否有一个事件在编辑单元格时触发,但值没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36509219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com