私のスプレッドシートは、フォームを使用して入力されたメインシートと、フォームから送信された応答を扱う人々のための他の複数のシートで構成されています。スクリプトは、レスポンスに記述されている項目のタイプに応じて、フォーム応答をこれらの他のシートに委譲します。 問題は、人物Aがそれぞれのシートからアイテムを削除したときに、メインシートで削除されないことです。 私の考えは、人物Aのシートの行「Q」の対応するセルにセットパスワードを入力すると、元のフォーム提出とタイムスタンプで項目を照合し、個人Aのシート内のアイテムのバージョンも削除しますメインシートとして。しかし、配列の行を指し示すように範囲を設定する場所を決めることはできません。私が試したすべてがデバッガで "undefined"を返送して何も削除しません。問題は、私が作った配列から行を得る方法がわからないことだと思います。以下の私のコードを参照してください:Google Appsスクリプトの配列から行を引き出す方法Googleシート
function onEdit() {//copies edited items from individual selector sheets back onto main spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var actSheet = ss.getActiveSheet();
var responseSheet = ss.getSheetByName("Item Request");
var actCell = actSheet.getActiveCell();
var actRow = actCell.getRow();
var actVal = actCell.getValue();
var actLoc = actCell.getA1Notation();
var last = actSheet.getLastRow();
var respLast = responseSheet.getLastRow();
var dataA = responseSheet.getRange(1, 1, respLast, 1).getValues(); //compiles an array of data found in column A through last row in response sheet
var tstamp1 = actSheet.getRange(actCell.getRow(), 1);
var tsVal1 = tstamp1.getValue();
var colEdit = actCell.getColumn();
//===========THIS IS WHERE I'M STUCK=======================
if ((actVal == "[email protected]") && (colEdit == 17)) {
for (i = 1; i < dataA.length; i++) {
if (dataA[i][0].toString == tsVal1.toString()) {
responseSheet.deleteRow(i + 1);
actSheet.deleteRow(actRow);
break;
}
}
}
else if (colEdit == 15) { //checks the array to see if the edit was made to the "O" column
for (i = 1; i < dataA.length; i++) {//checking for timestamp match and copies entry
if (dataA[i][0].toString() == tsVal1.toString()) {
var toEdit = responseSheet.getRange(i + 1, 16);
toEdit.setValue(actVal);
}
}
}
else if (colEdit == 16) { // checks the array to see if the edit was made in the "P" column
for (i = 1; i < dataA.length; i++) {//checking for timestamp match and copies entry
if (dataA[i][0].toString() == tsVal1.toString()) {
var toEdit = responseSheet.getRange(i + 1, 17);
toEdit.setValue(actVal);
}
}
}
else {return;}
}//end onEdit
こんにちは、私はそれを修正したと信じています。しかし、私の問題は今、forループで集められた配列から行を取得することです。その上の任意のアイデア? – Mara
おそらくあなたは修正して、あなたの質問を変更していないでしょう。しかし、これら2つの行のtoEditは定義されていません。 '// var toEdit = responseSheet.getRange(); <---配列全体の行を削除したいという印をつけるために配列から得た範囲に戻す方法がわからない responseSheet.deleteRow(toEdit); ' – Cooper
どういう意味ですか?私がコメントアウトした部分は、配列の行を指すように正しく記述する方法がわからない行です。 – Mara