Use the isDate()
function, below, to do what you're asking. The date format can be changed to suit other needs. Refer to [Utilities.formatDate()
][3] for more info.
// From http://stackoverflow.com/questions/1353684
// Returns 'true' if variable d is a date object.
function isValidDate(d) {
if ( Object.prototype.toString.call(d) !== "[object Date]" )
return false;
return !isNaN(d.getTime());
}
// Test if value is a date and if so format
// otherwise, reflect input variable back as-is.
function isDate(sDate) {
if (isValidDate(sDate)) {
sDate = Utilities.formatDate(new Date(sDate), "PST", "MM/dd/yyyy");
}
return sDate;
}
In your script, you've used the Range.getValues()
function, which will return a two-dimensional array of the data in the given range. (Your whole sheet, in your case.) You will therefore need to loop over the read values and call this function on any cell that you're interested in, and then write the information back out to the spreadsheet. There are plenty of examples of this both in Google's documentation and on Stackoverflow.
isValidDate
still the easiest way to test if a value is a Date object? Does Apps Script have a built-in function for this purpose now? – Indelible