0

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

听到是我将发送电子邮件的代码

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});


}

我需要通过这个“createStep”函数中的工作流程中的步骤从上面的代码中通过电子邮件发送 html 正文。我不知道如何将上面代码中的变量“body”引用到这个函数,或者即使我可以在这个函数中包含 html 正文。我该怎么做?

function createStep(approvers) {





 var step = new Object();//javascript object

  step['numberOfApprovers'] = approvers.length; //set number of approvers passed in array
 step['approvers'] = approvers.slice(0); //slice copies array 
  step['status'] = 'pending'; //set statust to pedning

  for (var i in approvers)
    step[approvers[i]] = 'pending'; //iterate field that indicates specific status

for (var m in approvers)
    step[approvers[m]] = MailApp.sendEmail(approvers, "test", "test",{htmlBody:body});

  return step



}
4

3 回答 3

0

我会创建一个包含两个工作表的电子表格。第一个包含数据,第二个包含批准者列表。第一张表中的一列表示最后一个批准人。

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

这将他带到一个脚本,他必须在其中登录。脚本检查用户是否具有预期的批准者,如果确定,则增加数据表中批准者列中的值。当有更多的批准者时,继续循环。

于 2013-02-11T22:42:58.750 回答
0

再想一想,并试图了解流程,为什么不创建一个仅在屏幕上显示信息的 Web 应用程序,其下方有一个“批准”按钮,并将该应用程序的链接发送给每个批准者?优点是您可以仅向登录用户授予对脚本的访问权限,并检查正确的人是否正在批准 - 使其更加安全。

请注意,您可以使用 ObjDB 库轻松地从电子表格中检索一行: http ://www.harryonline.net/scripts/objdb-storing-data-with-google-apps-script/482

于 2013-02-06T21:07:36.320 回答
0

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

var body;

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

}

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

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

于 2013-02-06T20:46:39.200 回答