Home > Software design >  How can I create a script which triggers an email based on a date?
How can I create a script which triggers an email based on a date?

Time:12-09

again Im not very well skilled in google scripts however I have had a lot of support through here so any guidance would be appreciated.

I would like to be able to remind a recipient a process is due for an update by a certain date. Ideally would like it where a reminder is sent 1 month before then again 1 week before the process is due for review.

I would like to be able to send a generic email which the only variables would be the recipients name, email address, due date and the name of the process.

Any ideas on how I could do this or any tutorials that would work. I have attached the link to the google sheet which the emails should be triggered off

https://docs.google.com/spreadsheets/d/1Qw8WefbVkS-AQXi1CcZ0z2CL-P0oNSZYqeT40oVF6go/edit?usp=sharing

CodePudding user response:

I let you customize the text ...

function reminder() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var data = sh.getDataRange().getValues()
  var d = new Date().getTime();
  for (var i=1;i<data.length;i  ){
    if (data[i][4]<=new Date(d 7*24*60*60*1000) && data[i][4]>=new Date(d 5*24*60*60*1000) && data[i][6]!=''){
      MailApp.sendEmail({to:data[i][3],
        subject: 'reminder ... week', 
        htmlBody: 'Hello ' data[i][1] ' The process for ' data[i][0] ' is due to review on ' data[i][4] ' Please review the content and contact the process team before its due date if amendments are required'
      })
      sh.getRange(i 1,7).setValue('sent')
    }
    else if (data[i][4]<=new Date(d 30*24*60*60*1000)  && data[i][4]>=new Date(d 28*24*60*60*1000)  && data[i][5]!=''){
      MailApp.sendEmail({to:data[i][3],
        subject: 'reminer ... month', 
        htmlBody: 'Hello ' data[i][1] ' The process for ' data[i][0] ' is due to review on ' data[i][4] ' Please review the content and contact the process team before its due date if amendments are required'
      })
      sh.getRange(i 1,6).setValue('sent')
    }
  }
}

Then put a trigger on a daily basis

  • Related