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 本文を電子メールで送信する必要があります。上記のコードからこの関数への変数「本文」を参照する方法、またはこの関数に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

2つのワークシートでスプレッドシートを作成します。1つ目はデータを含み、2つ目は承認者のリストを含みます。最初のシートの1つの列は、最後の承認者を示します。

したがって、スクリプトはデータワークシートの行をチェックし、まだ承認されていない行のデータを含む電子メールを送信します。承認するためのリンクが含まれています。受信者はデータを確認し、リンクをクリックして承認します。

これにより、彼はスクリプトに移動し、そこでログインする必要があります。スクリプトは、予想される承認者でユーザーをチェックし、OKの場合、データシートの承認者列の値を増やします。さらに承認者がいる間、ループを続行します。

于 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

If you want to include the body variable in both functions, declare the variable outside the functions:

var body;

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

}

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

However, I don't think you can send POST parameters to a script, GET should work. But I haven't tried it myself.

于 2013-02-06T20:46:39.200 に答える