1

I've set up an email automation script and its working fine but I'd like for the script to send an email when it recognized that a date (dd/mm/yy) has been entered into a cell. Right now, it's just recognizing when a cell has been filled.

function findTextsendupdate(e){
  const sh=e.range.getSheet();
if(sh.getName()=="My Email Sheet" && e.range.columnStart==13") {
const row=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).getValues()[0];
var Name = row[1];
var job = row[2];
var model = row[4];
var info = "Job number: " + job + "\n";
var emailAddress = row[0];
var isEmailSent = row[14];
var date = row[19]
var toString = Object.prototype.toString;
toString.call["object Date"]
if (isEmailSent != "EmailSent" && date == toString) {
  var message = "Dear " +   Name + "\n";
  var body = info + "\n" + message;   
  var subject = "email";
  MailApp.sendEmail(emailAddress, subject, body);
  sh.getRange(e.range.rowStart,14).setValue('EmailSent');    
} }}
Rubén
  • 34,714
  • 9
  • 70
  • 166
dooonut
  • 13
  • 3
  • 3
    `function isDate(date){ return(Object.prototype.toString.call(date) === '[object Date]'); } ` – Cooper Jun 23 '20 at 21:33
  • Does this answer your question? [How to check whether an object is a date?](https://stackoverflow.com/questions/643782/how-to-check-whether-an-object-is-a-date) – Iamblichus Jun 24 '20 at 09:50

1 Answers1

-1

A good way to do this is to use Regular Expressions. Here is an example that will recognize any date in the format D-M-YY, DD-MM-YYYY, D/M/YY, and DD/MM/YYYY.

let dateFromCell1 = "12/12/90";
let dateFromCell2 = "2/2/2000";
let dateFromCell3 = "asd12/12/90";
let dateFromCell4 = "235";
let dateFromCell5 = "Rome";

let dateRegEx = /^\d{1,2}[-/]\d{1,2}[-/](\d{2}|\d{4})$/;

console.log(dateRegEx.test(dateFromCell1));
//true
console.log(dateRegEx.test(dateFromCell2));
//true
console.log(dateRegEx.test(dateFromCell3));
//false
console.log(dateRegEx.test(dateFromCell4));
//false
console.log(dateRegEx.test(dateFromCell5));
//false
Jeremy Irons
  • 472
  • 5
  • 15