Necesito una forma de verificar si una celda ya está formateada con un formato de fecha específico. Si es VERDADERO haz algo, si es FALSO haz otra cosa.
Algo como:
var myDateFormat = "dd"/"mm"/"yyyy" "hh":"mm":"ss" if (sheet.getRange("A1") === myDateFormat) { console.log("TRUE"); }else{ console.log("FALSE"); }Lo anterior no funciona. ¿Qué se puede cambiar?
La forma más robusta es usar las funciones incorporadas getNumberFormat() o getNumberFormats()
Digamos que tengo las siguientes 2 celdas, con fechas formateadas de manera diferente:
Ahora puedo escribir algo como esto y lanzar main() :
const getDateFormats = range => SpreadsheetApp.getActiveSpreadsheet() .getActiveSheet() .getRange(range) .getNumberFormats() .flat(); const main = () => { const formatsInRange = getDateFormats('a1:a2') console.log(formatsInRange); formatsInRange.forEach((format, i) => /^dd\/MM\/yyyy$/.test(format) ? console.log(`Value ${i + 1} is OK`) : console.log(`Value ${i + 1} is not OK`) ) };Este script produce el siguiente resultado:
Aquí se hace referencia a los formatos que devuelve esta función. Y siempre puede console.log() el formato necesario primero para que pueda usarlo como una expresión regular más tarde.
Hazme saber si tienes alguna pregunta.
Puede usar Javascript regex para validar el formato de la cadena de fecha.
var pattern = /^([1-9]|([012][0-9])|(3[01]))-([0]{0,1}[1-9]|1[012])-\d\d\d\d [012]{0,1}[0-9]:[0-6][0-9]:[0-6][0-9]$/g; if (pattern.test(dateString){ console.log("TRUE"); } else{ console.log("FALSE"); }