1//日付と文字列それぞれに取得し文字列として比較2functionmyFunction0(){3const ss =SpreadsheetApp.getActiveSpreadsheet();4const st = ss.getSheetByName('sheet');5const data = st.getRange(1,1, st.getLastRow()).getValues()6.flat().filter(v=> v &&isDate(v));7let date =Math.max.apply(null, data);8 date =Utilities.formatDate(newDate(date),'JST','yyyy/MM/dd');9const data1 = st.getRange(1,4, st.getLastRow()).getDisplayValues().flat();10const targetRow = data1.indexOf(date)+1;11console.log(targetRow);12console.log(date);13}14//どちらも日付として取得し数値(経過ミリ秒)として比較15functionmyFunction1(){16const ss =SpreadsheetApp.getActiveSpreadsheet();17const st = ss.getSheetByName('sheet');18const data = st.getRange(1,1, st.getLastRow()).getValues()19.flat().filter(v=> v &&isDate(v));20const date =Math.max.apply(null, data);21const data1 = st.getRange(1,4, st.getLastRow()).getValues()22.flat().filter(v=> v).map(v=> v.getTime());23const targetRow = data1.indexOf(date)+1;24console.log(targetRow);25console.log(Utilities.formatDate(newDate(date),'JST','yyyy/MM/dd'));26}27//どちらも文字列として取得し文字列として比較28functionmyFunction2(){29const ss =SpreadsheetApp.getActiveSpreadsheet();30const st = ss.getSheetByName('sheet');31const data = st.getRange(1,1, st.getLastRow()).getDisplayValues()32.flat().filter(v=> v &&isDateStr(v));33const date = data.sort()[data.length-1];34const data1 = st.getRange(1,4, st.getLastRow()).getDisplayValues().flat();35const targetRow = data1.indexOf(date)+1;36console.log(targetRow);37console.log(date);38}39functionisDate(d){40returnObject.prototype.toString.call(d)=="[object Date]";41}42functionisDateStr(s){43return s.match(/^[0-9]{4}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])$/);44}