ここでは、おそらく「Y」は、最初の列に入力されているかどうかを確認でしょうonEdit()機能必要があります:
:
function onEdit(e) {
var ss = e.source;
if (e.range.getColumn() === 1 && e.value === "y") {
...some code here....
}
}
その後、あなたは「Y」が入力された行から値を取得します
getValues()は常に2次元配列を返します。なぜなら、1つしかないのに最初の要素を指定する必要があるからです。あなたがチェックインのシートからすべての値を取っている。同様に
:
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 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;
}
:
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スプレッドシートまたはExcel用ですか?彼はあなたにはGoogleスプレッドシートのみを掲載していますが、2つのExcel関連タグがあります。 –
@RobinGertenbach、これはGoogleスプレッドシート用です。私はちょうど同じようなプロセスがある場合に備えて、タグが付けられた関連するものに優れていて、誰かがそれを知っているならば。 – Alex