Advertisement
gavinwiener

Google App Script for Custom Kartra Certificate

Apr 30th, 2021
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. var colCertSentIdx = 4;
  2. var sender = "<your name>";
  3.  
  4. var slideTemplate = "<id of the google slide template>";
  5.  
  6. const monthNames = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN",
  7. "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
  8. ];
  9.  
  10.  
  11. function onChange(e) {
  12. // important to know that modifying the sheet in any way will trigger this event
  13.  
  14. var ss = SpreadsheetApp.getActive();
  15. var sheet = e.source.getActiveSheet();
  16. var sheetName = e.source.getSheetName();
  17.  
  18. var changeType = e.changeType;
  19.  
  20. console.log(changeType);
  21.  
  22. if (changeType == "INSERT_ROW") {
  23.  
  24. if (sheetName == "Sheet1") {
  25.  
  26. Logger.info("Process the new certificate")
  27.  
  28. var lastRow = sheet.getLastRow();
  29. console.log(`Last row: ${lastRow}`);
  30. var newData = sheet.getRange(lastRow, 1, 1, 4).getValues()[0];
  31.  
  32. var firstName = newData[0];
  33. var lastName = newData[1];
  34. var email = newData[2];
  35. console.log(newData);
  36.  
  37. generateCertificate(firstName, email, sender);
  38. Logger.info("Certificate sent");
  39. sheet.getRange(lastRow, 4).setValue(new Date());
  40.  
  41. }
  42. }
  43. }
  44.  
  45.  
  46. function generateCertificate(name, email, sender) {
  47. var presoTemplate = DriveApp.getFileById(slideTemplate);
  48. var presoCopy = presoTemplate.makeCopy();
  49. Logger.info(`New slides: ${presoCopy.getId()}`)
  50. presoCopy.setName(`${name} Branching Out Unit 1 Certificate`);
  51. var preso = SlidesApp.openById(presoCopy.getId());
  52.  
  53. const d = new Date();
  54.  
  55. var displayDate = `${d.getDate()} ${monthNames[d.getMonth()]} ${d.getFullYear()}`;
  56.  
  57. preso.replaceAllText("##NAME##", name, false);
  58. preso.replaceAllText("##DATE##", displayDate, false);
  59.  
  60. preso.saveAndClose();
  61.  
  62. var presoBlob = presoCopy.getAs('application/pdf');
  63. presoBlob.setName(preso.getName() + ".pdf");
  64.  
  65. var options = {};
  66. options.name = sender;
  67. options.attachments = [presoBlob];
  68. options.htmlBody = `
  69. <html><body>
  70. <p>Hey ${name},</p>
  71.  
  72. <p>ENTER WHATEVER TYPE OF MESSAGE YOU WANT HERE.</p>
  73. <p>Please find below your certificate of completion.</p>
  74. <br>
  75. <p>Regards,</p>
  76. <p>YOUR NAME</p>
  77. </body></html>
  78. `
  79. var headline = `${name}! Congratulations on finishing NAME OF THE COURSE`;
  80. MailApp.sendEmail(email, headline, "", options);
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement