在这里,你可能会需要一个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;
}
现在是Google Spreadsheets还是Excel,他发布的时候只提到Google Spreadsheet,但你有两个与Excel相关的标签。 –
@RobinGertenbach,这是Google电子表格;如果有类似的过程,并且有人知道,我只是标记了与Excel相关的东西。 – Alex