質問: mySheet.getDataRange().getValues(); for(var i=1;i
回答: まずはリファレンスを読むようにしましょう。 deleteRowは引数に行番号を取ります。 よって ``` mySheet.deleteRow(i + 1); ``` が正解です。 (配列の行番号とシートの行番号はずれている。) ただし、deleteRowすると、それ以降の行番号が`getDataRange()`の際とずれてしまうので 下から上に向かって処理する方がよさそうです。 追記 こんな感じじゃないですかね?(試してないけど) ``` for(var i = dat.length - 1; i >= 0; i--) { if(dat[i][8] == "未完") { var TestDate = dat[i][3]; if(TestDate < YMD){ mySheet.getRange(i + 1, 9).setValue("完了"); // 毎回APIを呼び出すことになるが...。 } } else if(dat[i][8] == "完了"){ var TestDate = dat[i][3]; if(TestDate < LastMonth){ mySheet.deleteRow(i + 1); } } } ```