2013-02-06 30 views
0

我正在創建一個工作流程過程,將表單的正文通過電子郵件發送給該工作流程中的用戶。我可以遍歷用戶併發送電子郵件,但我現在不知道如何傳遞電子郵件正文的「e」參數。實際上我已經有了一個函數來發送主體,但是我需要將其包含在我的步驟過程中(我認爲)。使用Google Apps腳本的工作流程 - 我需要在第一步中通過電子郵件向用戶發送電子郵件

聽到的是我的代碼,將發送電子郵件

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


} 

我需要從代碼通過電子郵件發送HTML正文上面這個「createStep」功能的工作流程步驟。我不知道如何從上面的代碼引用變量「body」到這個函數,或者即使我可以在這個函數中包含html body。我將如何做到這一點?

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 



} 

回答

0

如果你想要在這兩個函數體內變量,聲明函數外的變量:

var body; 

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

} 

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

不過,我不認爲你可以發送POST參數的腳本,GET應該管用。但我自己並沒有嘗試過。

0

第二個想法,並試圖瞭解過程,爲什麼不創建一個Web應用程序,只顯示屏幕上的信息,其下面有一個批准按鈕,並將鏈接發送給每個批准者? 優點是,您只能訪問腳本以僅登錄用戶,並檢查合適的人正在批准 - 使其更安全。

注意,您可以使用ObjDB庫可以輕鬆地從電子表格檢索行: http://www.harryonline.net/scripts/objdb-storing-data-with-google-apps-script/482

+0

如何在具有「e」參數的函數之外定義函數的外部?它返回一個錯誤,指出「..Parameter is undefined」。我需要將包含e參數的HTML表單發送給我所有批准者。如果你知道更好的方式,我們可以用我的代碼工作。 – lockdown277

+0

如何將信息顯示回屏幕?打開Json Feed?我將如何構建審批者流程? – lockdown277

0

我想創建一個電子表格,兩個工作表。第一個包含數據,第二個包含批准者列表。第一張表中的一列表示最後的批准者。

因此,您的腳本將檢查數據工作表中的行,併發送包含尚未批准的行的數據的電子郵件。它包含一個批准鏈接。接收者檢查數據,並點擊鏈接批准。

這會將他帶到需要登錄的腳本。該腳本用預期審批者檢查用戶,如果確定,則增加數據表中批准者列中的值。雖然有更多批准者,請繼續循環。

+0

這聽起來像個好主意。你有我可以遵循的示例腳本嗎? – lockdown277

+0

不,我把它留給你:-) 但是,如果你卡在某處,請將它張貼在這裏。 腳本中有兩個功能:一個用於檢查任何未經批准的行,您可以手動啓動或使用觸發器。它發送第一封電子郵件。 另一種是Web應用程序,由審批者調用,在電子郵件中的鏈接之後。它增加了櫃檯併發送電子郵件給下一個批准者。 –

相關問題