Estoy tratando de verificar si las fechas en la columna A son esta semana, luego muestro la fila.
mi problema es que mi variable "t" no está definida en el depurador y cuando se ejecuta aparece el siguiente error...
Excepción: Argumento no válido: fecha. Debe ser del tipo: Fecha
function weekNumberTest() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName("Test"); var v = s.getRange("A1:A").getValues(); var data = Utilities.formatDate(new Date(), "GMT", "w");//Exception: Invalid argument: date. Should be of type: Date for (var i = s.getLastRow(); i > 2; i--) { var t = v[i ]; if (t != "") { var testDateCell=Utilities.formatDate(t, "GMT", "w"); if (testDateCell==data ) { s.showRows(i); } } } } function weekNumberTest() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName("Test"); const vs = sh.getRange(2,1,sh.getLastRow()-1).getValues().flat(); const wk = parseInt(Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), "w")); vs.forEach((d,i) => { let w =parseInt(Utilities.formatDate(new Date(d),ss.getSpreadsheetTimeZone(),"w")); if(w == wk || w == wk - 1) {//try this for last two weeks. This may not work at beginning of year...I don't know for sure. sh.showRows(i + 2); } else ( sh.hideRows(i + 2) ) }); }function weekNumberTest() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName("Test"); var v = s.getRange("A1:A").getValues(); var data = Utilities.formatDate(new Date(), "GMT", "w"); for (var i = s.getLastRow(); i > 2; i--) { var t = new Date(v[i][0]); // <---------------- the error was here if (t != "") { var testDateCell = Utilities.formatDate(t, "GMT", "w"); if (testDateCell == data) { s.showRows(i); } } } }Para obtener las fechas de esta semana y la última, puede cambiar una línea de esta manera:
if (testDateCell == data || testDateCell == data-1) {Explicación
var v = s.getRange("A1:A").getValues(); obtiene una matriz 2D [[a],[b],[c]] . Para obtener valores de una matriz 2D, debe usar dos índices: v[0][0] , v[0][1] , v[0][2] .
Alternativamente, puede usar el método flat() para convertir una matriz 2D en una matriz 1D de esta manera: var v = s.getRange("A1:A").getValues().flat(); . En este caso, puede abordar los valores de la matriz con un índice: v[0] , v[1] , v[2] .