junbjn98

sendMailOnChange

Jun 10th, 2021 (edited)
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const subject = "New change"
  2. const firstColumnIndex = 3
  3. const firstColumn = "C"
  4. const firstRow = 2
  5. const lastColumnIndex = 5
  6. const lastColumn = "E"
  7. const emailColumn = "B"
  8.  
  9. function sendMail(email, msg) {  
  10.   MailApp.sendEmail({
  11.     to: email,
  12.     subject: subject,
  13.     htmlBody: msg
  14.   });
  15. }
  16.  
  17. function sendMailChange() {
  18.   var Cvals = SpreadsheetApp.getActiveSheet().getRange(firstColumn + ":" + firstColumn).getValues();
  19.   var last = Cvals.filter(String).length;
  20.   var range = firstColumn + firstRow + ":" + lastColumn + last;
  21.   var data = SpreadsheetApp.getActiveSheet().getRange(range).getValues();
  22.   var table = getTable(data);
  23.   var mails = getListMail();
  24.  
  25.   for (mail of mails) {
  26.     sendMail(mail, table);
  27.   }
  28. }
  29.  
  30. function getListMail() {
  31.   var Bvals = SpreadsheetApp.getActiveSheet().getRange(emailColumn + ":" + emailColumn).getValues();
  32.   var last = Bvals.filter(String).length;
  33.   var range = emailColumn + firstRow + ":" + emailColumn + last;
  34.   var data = SpreadsheetApp.getActiveSheet().getRange(range).getValues();
  35.   return [].concat(...data);
  36. }
  37.  
  38. function getTable(data) {
  39.   var result = ["<table border=1'>"];
  40.   var ll = data[0].length;
  41.   var row = 0;
  42.   for(var i = 0, l = data.length; i < l; i++) {
  43.       row = data[i];
  44.       result.push("<tr>");
  45.       for(var ii = 0; ii < ll; ii++){
  46.           result.push('<td>' + row[ii] + '</td>');
  47.       }
  48.       result.push("</tr>");
  49.   }
  50.   result.push("</table>");
  51.   return result.join('\n');
  52. }
  53.  
  54. function onEdit(e) {
  55.   var editRange = { // C2:E9999
  56.     top : firstRow,
  57.     bottom : 999,
  58.     left : firstColumnIndex, // 3 => C
  59.     right : lastColumnIndex // 5 => E
  60.   };
  61.   // Exit if we're out of range
  62.   var thisRow = e.range.getRow();
  63.   if (thisRow < editRange.top || thisRow > editRange.bottom) return;
  64.  
  65.   var thisCol = e.range.getColumn();
  66.   if (thisCol < editRange.left || thisCol > editRange.right) return;
  67.  
  68.   sendMailChange();
  69. }
Add Comment
Please, Sign In to add comment