在這裏,你可能會需要一個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