Как мне ответить на письмо в строке соответствия при редактировании и повторной отправке формы в скрипте Google - PullRequest
0 голосов
/ 17 апреля 2020
  1. когда я отправляю форму, он отправляет электронное письмо утверждающему, чтобы принять решение (утвердить, отклонить или запросить дополнительные изменения)
  2. когда утверждающий нажимает кнопку запроса дополнительных изменений, комментарий и edit Url отправит запрашивающей стороне, и запрашивающая сторона может снова отредактировать форму и повторно отправить ее.
  3. Проблема заключается в том, что при повторной отправке формы запрашивающая почта всегда берется из последней строки в листе Google. Как я могу получить адрес электронной почты, соответствующий ID ответа или URL?
    function sendApprovalEmail(e){
  var sh = PropertiesService.getDocumentProperties().getProperty('ssID');
  var ss = SpreadsheetApp.openById(sh);
  var sheet = ss.getSheetByName('Form Responses 1');

  var row = sheet.getLastRow();
  var range = sheet.getRange(row, 1, 1, sheet.getLastColumn());
  var range2 = sheet.getRange(1, 1, 1, sheet.getLastColumn());
  var lr = range.getLastRow();
  var fr = range2.getRow();

   var col1 = sheet.getRange(lr, 1).getValue();
   var col2 = sheet.getRange(lr, 2).getValue();
   var col3 = sheet.getRange(lr, 3).getValue();
   var col4 = sheet.getRange(lr, 4).getValue();
   var col5 = sheet.getRange(lr, 5).getValue();
   var col6 = sheet.getRange(lr, 6).getValue();
   var col7 = sheet.getRange(lr, 7).getValue();
   var col8 = sheet.getRange(lr, 8).getValue();

   var colT1 = sheet.getRange(fr, 1).getValue();
   var colT2 = sheet.getRange(fr, 2).getValue();
   var colT3 = sheet.getRange(fr, 3).getValue();
   var colT4 = sheet.getRange(fr, 4).getValue();
   var colT5 = sheet.getRange(fr, 5).getValue();
   var colT6 = sheet.getRange(fr, 6).getValue();
   var colT7 = sheet.getRange(fr, 7).getValue();
   var colT8 = sheet.getRange(fr, 8).getValue();

  var url = ScriptApp.getService().getUrl();

  var sheet2 = ss.getSheetByName('Detailed Approval Records');
  var row2 = sheet2.getLastRow();
  var range2 = sheet2.getRange(row2, 1, 1, sheet2.getLastColumn());
  var lr2 = range2.getLastRow();
  var timestamp = sheet2.getRange(lr2, 1).getValue();
  var emails = sheet2.getRange(lr2, 2).getValue();
  var responseUrl =sheet2.getRange(lr2, 5).getValue();
  //var emails = Session.getEffectiveUser().getEmail();

  var options = '?status=%STATUS%&timestamp=%TIMESTAMP%&reply=%EMAIL%&responseUrl=%RESPONSEURL%'
         .replace("%TIMESTAMP%",encodeURIComponent(timestamp))
         .replace("%EMAIL%",emails)    
         .replace("%RESPONSEURL%", responseUrl)
   var approve = url+options.replace("%STATUS%","Approved"); 
   var reject = url+options.replace("%STATUS%","Rejected");
    var moreInfo = url+options.replace("%STATUS%","MoreInformation");

  var html = "<body>"+
               "<div style='background-color: #eceff1 ; width: 650px; border: 2px solid blue-grey lighten-2; padding: 50px; margin: 20px; display: block;'>"+
                "<h2 style='font-size:200%'><strong>Leave Application</strong></h2><br/>"+
                //"<p style='font-size:120%'>"+ emailAddress + "<span> has submitted a leave application.</span></p>"+
                  "<table style='font-family: arial, sans-serif;border-collapse: collapse; width: 650px;'>"+
                      "<tr>"+
                        "<td style= 'font-size:120%; width: 315px; font-weight:bold; text-align: left;  border: 1px solid #dddddd;padding: 8px;'>" + colT2 +  "</td>"+ 
                        "<td style= 'font-size:120%;text-align: left; border: 1px solid #dddddd;padding: 8px; width: 315px'>" + col2 + "<td>"+
                      "</tr>"+
                   "<tr >"+
                        "<td style= 'font-size:120%; font-weight:bold;text-align: left; border: 1px solid #dddddd; padding: 8px;'>" + colT3 +  "</td>"+ 
                        "<td style= 'font-size:120%;text-align: left; border: 1px solid #dddddd;padding: 8px; width: 315px'>" + col3 + "<td>"+
                      "</tr>"+
                   "<tr>"+
                        "<td style= 'font-size:120%; font-weight:bold;text-align: left; border: 1px solid #dddddd; padding: 8px;'>" + colT4 +  "</td>"+ 
                        "<td style= 'font-size:120%;text-align: left; border: 1px solid #dddddd;padding: 8px; width: 315px'>" + col4 + "<td>"+
                      "</tr>"+
                   "<tr>"+
                        "<td style= 'font-size:120%; font-weight:bold; text-align: left; border: 1px solid #dddddd; padding: 8px;'>" + colT5 +  "</td>"+ 
                        "<td style= 'font-size:120%;text-align: left; border: 1px solid #dddddd;padding: 8px; width: 315px'>" + col5 + "<td>"+
                      "</tr>"+
                   "<tr>"+
                        "<td style= 'font-size:120%; font-weight:bold; text-align: left; border: 1px solid #dddddd; padding: 8px;'>" + colT6 +  "</td>"+ 
                        "<td style= 'font-size:120%;text-align: left; border: 1px solid #dddddd;padding: 8px; width: 315px'>" + col6 + "<td>"+
                      "</tr>"+
                   "<tr>"+
                        "<td style= 'font-size:120%; font-weight:bold; text-align: left; border: 1px solid #dddddd; padding: 8px;'> " + colT7 +  "</td>"+ 
                        "<td style= 'font-size:120%;text-align: left; border: 1px solid #dddddd;padding: 8px; width: 315px'>" + col7 + "<td>"+
                      "</tr>"+
                  "</table><br/><br/>"+

                      "<a href="+ approve +">Approve</a><br />"+
                      "<a href="+ reject +">Reject</a><br />"+
                       "<a href="+ moreInfo +"> Request More Info</a><br />"+
                "</body>";


   var approverEmail = PropertiesService.getDocumentProperties().getProperty('email');
   //var message = getMessageToApprover(colT2, col2, colT3, col3,colT4, col4,colT5, col5,colT6, col6,colT7, col7);  
   MailApp.sendEmail(approverEmail,
                    "Leave Application", 
                    "Requires html",
                    {htmlBody: html});

   var message2 = getMessageToRequestor(colT2, col2, colT3, col3,colT4, col4,colT5, col5,colT6, col6,colT7, col7);              
   MailApp.sendEmail(emails,
                    "Leave Application", 
                    "Requires html",
                    {htmlBody: message2});

   SpreadsheetApp.flush();
}
...