質問: data.getRange(i,1).getValue(); data.getRange(i,5).setValue("◎"); }else{ data.getRange(i, 5).setValue("×"); } } } ``` 問題点1はどのような解決方法があるのでしょうか? 問題点2 console.log(cansellrow.getTime()); この結果 D 2020-06-25T18:46:17.012Z 1593097200000 D 2020-06-25T18:46:17.224Z 1593097200000 D 2020-06-25T18:46:17.740Z 1593097200000 が返ってきました。 多分日付の比較の仕方がまずいのかなと思います。 このあと退会通知日の5日前にはスプレッドシートの該当部分の色をかえるという処理を加えるのでわかりやすいような日付比較を教えていただけますと幸いですよろしくお願いします。
回答: ええと、cansellRowは、提示されている表だと5行分得られますね。 2行目から比較していくので、2行目から5行分、つまり**7行目より小さい間**forループを回さないといけません。提示されたコードだと、2行目から5行目より小さい間ループしているので、4行目までしか処理されないのです。 そして、cansellRowの要素を取り出すときには、行番号が入っている`i`をそのまま使うのではなく、**cansellRowの先頭(添え字0)から取り出せる**ように、`i - 2`としなければなりません。そのまま`i`を使っているので、cansellRow[2]~cansellRow[4]だけが使われ、これらはすべて「◎」の範囲の日付なのです。 ``` for(var i = 2; i < cansellRow.length + 2; i++) { var cansellrow =new Date(cansellRow[i - 2]); ``` 本当は、`i`を行番号ではなく0からcansellRowのlength分ループさせて、getRangeのほうを調整したほうがわかりやすそうですが、修正箇所が多くなってしまうので。 追伸: キャンセルの綴りは**cancel**です。