gpt4 book ai didi

javascript - 在两个不同的工作表中找到具有相同列的选定行并将其从其中删除

转载 作者:行者123 更新时间:2023-12-03 06:00:05 25 4
gpt4 key购买 nike

我有两张纸;第一个是 checkin ,有 6 列,第二个是 checkout ,有 8 列。

我的专栏是这样的:

签到表中:

代码|型号|制作|类型 |地点 |入住时间

在结帐表中:

退房?(y/n)|代码|型号|制作|类型 |地点 |入住时间 |退房时间

如您所见, checkin 列和数据通过过滤功能进入 checkout 表。因此,当我想 checkout “模型”时,我只需在特定单元格中输入模型名称,它就会从 checkin 表中带来相关数据。我还为结账表的第一列创建了一个函数,一旦我在“结账?(y/n)”列下输入“y”,在其中一个过滤行中,它将输入 now() 时间最后一栏。

我的问题是,我还需要在“ checkout ”表的第一列中找到带有“y”的行,并根据“ checkin 时间”在 checkin 表中找到该行(即每行最独特的数据)并将其从列表(即我的库存列表)中删除。我不知道该怎么做?我一直在寻找谷歌脚本代码,但并不幸运。任何建议表示赞赏。

最佳答案

在这里您可能需要一个 onEdit()检查第一列中是否输入了“y”的函数:

function onEdit(e) {
var ss = e.source;
if (e.range.getColumn() === 1 && e.value === "y") {
...some code here....
}
}

然后从输入“y”的行中获取值:

var checkOutArray = checkOutSheet.getRange(e.range.getRow(), 2, 1, 6).getValues()[0];

getValues()总是返回一个二维数组,这就是为什么您需要指定您想要它的第一个元素,即使只有一个元素。

以同样的方式从签到表中获取所有值:

var checkInArray = checkInSheet.getRange(2, 1, checkInSheet.getLastRow() - 1, checkInSheet.getLastColumn()).getValues();

然后是检查部分。我认为比较所有数组的值而不是仅比较日期可能更安全:

for (var i = 0; i < checkInArray.length; i++) {
if (arraysEqual(checkInArray[i], checkOutArray) == true) {
checkInSheet.deleteRow(i + 2); //i + 2 is the row in which same values have been found
return true;
}
else continue;
}

哪里arraysEqual是:

function arraysEqual(arr1, arr2) {
if(arr1.length !== arr2.length) {
return false;
}
for(var i = arr1.length; i--;) {
if(arr1[i].toString() !== arr2[i].toString()) {
return false;
}
}

return true;
}
<小时/>

总的来说,它看起来像这样:

function onEdit(e) {
var ss = e.source;
var checkOutSheet = ss.getSheets()[0];
var checkInSheet = ss.getSheets()[1];
if (e.range.getColumn() === 1 && e.value === "y") {
var checkOutArray = checkOutSheet.getRange(e.range.getRow(), 2, 1, 6).getValues()[0]; //getting the values from the row where "y" was entered (e.range.getRow())
var checkInArray = checkInSheet.getRange(2, 1, checkInSheet.getLastRow() - 1, checkInSheet.getLastColumn()).getValues(); //getting all the values from check out sheet
for (var i = 0; i < checkInArray.length; i++) {
if (arraysEqual(checkInArray[i], checkOutArray) == true) {
checkInSheet.deleteRow(i + 2); //i + 2 is the row in which same values have been found
return true;
}
else continue;
}
}

}

function arraysEqual(arr1, arr2) {
if(arr1.length !== arr2.length) {
return false;
}
for(var i = arr1.length; i--;) {
if(arr1[i].toString() !== arr2[i].toString()) {
return false;
}
}

return true;
}

关于javascript - 在两个不同的工作表中找到具有相同列的选定行并将其从其中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782979/

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