gpt4 book ai didi

javascript - 将 getRange 限制为不与 onEdit 函数一起使用的特定工作表

转载 作者:行者123 更新时间:2023-12-02 20:54:42 28 4
gpt4 key购买 nike

当我在 Novo Item 上时:我已经让这段脚本正常工作,其目标是一旦 Novo Item 工作表上的单元格 W4 发生更改,就生成唯一的 ID。它会迭代另一个工作表 (ArquivoItens) 上的 ID 列表,如果该 ID 尚不存在,则向其中添加 1。

我还设置了一条警报消息,以防用户写入 ArquivoItens 中已存在的产品名称。

当我在工作表 EditarItem 上并且更改单元格 W4 的值时,即使我已指定此弹出窗口的工作表名称,也会出现警报消息。

function setItemID() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("ArquivoItens");
var NovoItemSheet = ss.getSheetByName('Novo Item');

var drang = sheet.getRange(1, 1, sheet.getLastRow(), 2);
var ids = drang.getValues();
var biggest = 0;

//iterates through the list of ID's
for(var i = 0; i < ids.length; i++){
var id = ids[i][0];
if(id > biggest){
biggest = id;
}
}
//although it is specified above that this is on Novo Item sheet, the pop up below keeps going off when I'm on EditarItem
var selectedCell = NovoItemSheet.getRange("W4");

for (var j = 1; j < ids.length; j++) {
var itemName = ids[j][1];
if (selectedCell.getValue() == itemName){
Browser.msgBox('Já existe um item com este nome!')
return;
}
}

任何有关为什么会发生这种情况的帮助都会受到赞赏。

干杯,安东尼奥

最佳答案

当您编辑任何工作表上的任何单元格时,都会触发 onEdit 并运行该函数

  • 如果满足条件 selectedCell.getValue() == itemName - 无论您刚刚创建了重复的产品名称还是之前已经存在,您都会收到警报消息。

  • 为了解决此问题,您需要指定哪种编辑将触发该功能。

  • 这是你可以做的事情,例如通过检查哪个工作表(如有必要,还有哪个范围)已被编辑。

示例:

function setItemID() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheetName = ss.getActiveSheet().getName();
if(activeSheetName == 'Novo Item'){
// carry out the rest of the function
...
}
}

关于javascript - 将 getRange 限制为不与 onEdit 函数一起使用的特定工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61515768/

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