google 脚本电子邮件表单 accept/reject

google script email form accept/reject

我写了一些宏代码来根据表单提交向经理发送电子邮件(用于 expense/approval 流程),这是我使用 google [=34= 的第一个项目] 所以也许我可能遗漏了一些简单的东西,但我为此查看了 2 个教程,我的代码与重要的代码相匹配。

第一部分 SendEmail 运行完美,并向经理发送电子邮件,其中包含做出决定所需的少数必要列。以及 2 links 来批准或拒绝。这些 link 是使用我发布代码时生成的 URL 并附加 approval=true 和提交表单请求的人的电子邮件构建的。

下一部分 doGet(e) 应该在点击经理电子邮件中的 link 时触发,然后生成一封电子邮件发送给请求者,但是,当 link 单击它只是将我带到一个显示 "Invalid email: undefined" 的页面,即使顶部的 URL 具有所有正确的信息。

我在这里错过了什么?

编辑:我使用这个视频来获取大部分代码的布局:https://www.youtube.com/watch?v=eduG0XZ9mDs

代码:

function sendEmail(e){
  /**
 var email = e.values[1];
 var item = e.values[2]; 
 var cost = e.values[3];
  */
  var serviceInformation = e.values[1];
  var language = e.values[2];
  var meetingType = e.values[3];
  var eventDate = e.values[4];
  var clientName = e.values[5];
  var detailedDirections = e.values[6];
  var onSitePOCName = e.values[7];
  var onSitePOCNumber = e.values[8];
  var department = e.values[9];
  var contactPhoneNumber = e.values[10];
  var approval = e.values[11];  //the one we need to modify
  var requestorEmail = e.values[12];
  var managerEmail = e.values[13];
  var Language2 = e.values[14];
  var interpreterName = e.values[15];
  var interpreterAgency = e.values[16];
  var dateConformationSent = e.values[17];
  var specialNotes = e.values[18];
  
  
  var url = 'https://script.google.com/a/macros/richmond.k12.va.us/s/AKfycbwuRr1boKTH0v1mprWmc7PE66_mQ_dmPE0lyWb7vkfiyW3pn31b/exec';
 
  
  /**might be that the & needs to be a ?*/
  var approve = url + '?approval=true'+'?reply='+requestorEmail;
  var reject = url + '?approval=false'+'?reply='+requestorEmail;
  
  var html = "<HTML><body>"+
               "<h2>please review</h2><br />"
  +"<P>" + language +"  " + serviceInformation
  +"<p>" + meetingType+ "  on   "+ eventDate + "    for " +clientName
  +"<p>" + "Location: "+ department
  +"<p>" + "requester: "+ requestorEmail+ "  "+
    "<p>"+
    
    "<a href="+ approve +">Approve</a><br />"+
      "<p>"+
              
    "<a href=" +reject+">Reject</a><br />"+
              "</HTML></body>";
                   

MailApp.sendEmail(managerEmail, "Approval Request", "what no html?", {htmlBody: html});
  
}


function doGet(e) {
 
  
  var app = UiApp.createApplication();
  
  var aprovalResponce = (e.parameter.approval == 'true') ? 'Approved.' : 'Sorry, you need to reschedule';
  
  var msg = "Your manager said :" + aprovalResponce;
  
  var replyEmail = e.parameter.reply;
Logger.log(replyEmail);
  
  MailApp.sendEmail(replyEmail, "Approval Request", msg);
  
  var helloWorldLabel = app.createLabel(msg);
  app.add(helloWorldLabel);
  

  return app;
}

更新的答案

哦,该视频是在 UI Service service was deprecated, that's what you're calling on the first line of the doGet(). Google stopped supporting this in favor of a different service, HTML Service 之前制作的,因此即使从视频中完美转录,此 doGet() 部分也可能无法使用。