Javascript 使用谷歌应用程序脚本的工作流-我需要在第一步向用户发送电子邮件

Javascript 使用谷歌应用程序脚本的工作流-我需要在第一步向用户发送电子邮件,javascript,html,function,variables,google-apps-script,Javascript,Html,Function,Variables,Google Apps Script,我正在创建一个工作流流程,该流程将通过电子邮件将表单主体发送给该工作流中的用户。我可以遍历用户并发送电子邮件,但我现在不知道如何传递电子邮件正文的“e”参数。实际上,我已经有了一个发送身体的函数,但是我需要在我的步骤过程中包含它(我想) Hear是我发送电子邮件的代码 function sendEmail_(e) { var sheet = SpreadsheetApp.openById("0AuCblud0Ss7sdfA1bXZjYXA0Y0IhthkhUQm5vWG02MVE").g

我正在创建一个工作流流程,该流程将通过电子邮件将表单主体发送给该工作流中的用户。我可以遍历用户并发送电子邮件,但我现在不知道如何传递电子邮件正文的“e”参数。实际上,我已经有了一个发送身体的函数,但是我需要在我的步骤过程中包含它(我想)

Hear是我发送电子邮件的代码

function sendEmail_(e) {


  var sheet = SpreadsheetApp.openById("0AuCblud0Ss7sdfA1bXZjYXA0Y0IhthkhUQm5vWG02MVE").getActiveSheet();


 var row = sheet.getLastRow()+1;

 sheet.getRange(row,3).setValue(row);

    var range = sheet.getRange(sheet.getLastRow(),1,1,23);
 range.setValues([[e.parameter.LastName,e.parameter.FirstName,row /*e.parameter.DivisionName*/,e.parameter.EffectiveDate,e.parameter.Status, 

          e.parameter.Network,e.parameter.EmployeeNewPosition,e.parameter.DivisionFolder,e.parameter.SpecificIndividual,
                    e.parameter.Email,e.parameter.username,e.parameter.who,e.parameter.Banner,e.parameter.RMS ,e.parameter.HAPPY,e.parameter.Sweeps,
                   e.parameter.Comcate,e.parameter.Netviewer,e.parameter.NetDispatcher,e.parameter.IMARS,"pending", e.parameter.DivHeadEmail,  e.parameter.Director]]);


   var body = '<form action= <form action = " https://sites.google.com/a/macros/wichitafallstx.gov/s/AKfycbxAOGO6q9ofauf34xlDA9sLG8sUXeZsuvQkDKATOQ/exec" method ="post">' +

      "<b>Last Name:</b>" + e.parameter.LastName +  '<br><br>' + 
 "<b>First Name:</b>" +  e.parameter.FirstName +  '<br><br>' + 
"<b>Division Name:</b>" + e.parameter.DivisionName +  '<br><br>' + 
"<b>Effective Date:</b>" + e.parameter.EffectiveDate +  '<br><br>' + 
  "<b>Employee Status:</b>" + e.parameter.Status +  '<br><br>' + 
    "<b>Network:</b>" + e.parameter.Network +  '<br><br>' + 
"<b>Employee New Position:</b>" + e.parameter.EmployeeNewPosition +  '<br><br>' + 
"<b>Division Folder:</b>" + e.parameter.DivisionFolder +  '<br><br>' + 
"<b>Specific Individual:</b>" + e.parameter.SpecificIndividual +   '<br><br>' + 
"<b>Email:</b>" + e.parameter.Email +  '<br><br>' + 
"<b>Username:</b>" + e.parameter.username +  '<br><br>' +  
"<b>who:</b>" + e.parameter.who +  '<br><br>' + 
"<b>Banner:</b>" + e.parameter.Banner + '<br><br>' + 
"<b>RMS:</b>" + e.parameter.RMS + '<br><br>' + 
  "<b>HAPPY:</b>" + e.parameter.HAPPY + '<br><br>' + 
    "<b>Sweeps:</b>" + e.parameter.Sweeps + '<br><br>' + 
      "<b>Comcate:</b>" + e.parameter.Comcate + '<br><br>' + 
        "<b>Netviewer:</b>" + e.parameter.Netviewer + '<br><br>' + 
          "<b>NetDispatcher:</b>" + e.parameter.NetDispatcher + '<br><br>' + 
            "<b>IMARS:</b>" + e.parameter.IMARS + 
      '<br />' + 
       '<br />' +    

         '<input type="hidden" name="row" value=" ' + row +' "/>' +
       '<input type="submit" value="Approve" onclick="approve()" />' +
         '</form>' 
            ; 



  //  var owners = e.parameter.DivHeadEmail;
//  var mail = MailApp.sendEmail(owners, "test",'' , {htmlBody:body});


}

如果要在两个函数中都包含body变量,请在函数外部声明该变量:

var body;

function sendEmail_(e) {
  ...
  body = ...

}

function createStep(approvers) {
  ...
  sendEmail(..., {htmlBody:body}
  ..
}

但是,我认为您不能将POST参数发送到脚本,GET应该可以工作。但是我自己还没有尝试过。

再想一想,并试图了解这个过程,为什么不创建一个web应用程序,只在屏幕上显示信息,下面有一个“批准”按钮,并向每个批准者发送指向该应用程序的链接? 优点是,您可以只向登录的用户授予对脚本的访问权限,并检查是否有合适的人在批准该脚本,从而使其更加安全

请注意,您可以使用ObjDB库轻松地从电子表格检索行:
我将创建一个包含两个工作表的电子表格。第一个包含数据,第二个包含批准者列表。第一张工作表中的一列表示最后一位审批人

因此,脚本将检查数据工作表中的行,并发送一封电子邮件,其中包含尚未批准的行的数据。它包括一个要批准的链接。接收者检查数据,然后单击链接进行批准


这就给他带来了一个脚本,在那里他必须登录。该脚本将用户与预期的审批人进行检查,如果确定,则增加数据表中“审批人”列中的值。当有更多的审批人时,继续循环。

如果主体具有“e”参数,我如何在功能之外定义主体?它返回一个错误,上面写着“.参数未定义”。我需要将包含e参数的html表单发送给步骤中的所有审批人。如果你知道一个更好的方法,那么我们可以使用我的代码。我如何将信息显示回屏幕?打开Json提要?我将如何构建审批人流?这听起来是个好主意。你有我可以遵循的示例脚本吗?没有,我把它留给你:-)但是如果你被困在某个地方,就把它贴在这里。脚本中有两个函数:一个用于检查任何未批准的行,您可以手动启动或使用触发器。它发送第一封电子邮件。另一个是一个web应用程序,由审批人根据电子邮件中的链接调用。它会增加计数器并向下一个审批人发送电子邮件。
var body;

function sendEmail_(e) {
  ...
  body = ...

}

function createStep(approvers) {
  ...
  sendEmail(..., {htmlBody:body}
  ..
}