2014-01-16 28 views
0

我對此有點新,所以在此先感謝您的幫助!我已經收到一封確認電子郵件,其中基於Google表單的提交觸發器/事件。但是,我希望能夠讓腳本從用戶提交的內容中抓取兩個字段,然後計算一個字段以包含在確認電子郵件中。一旦我在代碼中添加了計算字段(cost1),確認電子郵件就停止發送。我檢查了執行記錄,它運行速度更快,並說它成功執行,但沒有發送電子郵件......我的代碼有什麼問題,或者我是否要求腳本做得太多?如何計算Google電子表格腳本中的變量,然後返回確認電子郵件

腳本:

function EmailFormConfirmation() { 


    var sheetName = "Form Responses"; 
    var columnNumber = 3; 
    var subject = "Summer School Registration Confirmation"; 
    var gn = 2; 
    var sfn = 4; 
    var sln = 5; 
    var s1 = 13; 
    var s2 = 14; 


    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dataSheet = ss.getSheetByName(sheetName); 
    var numRows = dataSheet.getLastRow(); 
    var email = dataSheet.getRange(numRows,columnNumber).getValue(); 
    var guardianName = dataSheet.getRange(numRows,gn).getValue(); 
    var studentFirst = dataSheet.getRange(numRows,sfn).getValue(); 
    var studentLast = dataSheet.getRange(numRows,sln).getValue(); 
    var session1 = dataSheet.getRange(numRows,s1).getValue(); 
    var session2 = dataSheet.getRange(numRows,s2).getValue(); 
    var emailPattern = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+$/; //email reg expression 
    var validEmailAddress = emailPattern.test(email); 
    var cost1 = 0 
    if(session1 === "Driver's Education Classroom & Behind the Wheel") 
    { 
     var cost1 = cost1+400 
    } 
    else 
    { 
     var cost1 = cost1+180 
    } 

    if(session2 > 0) 
    { 
     var cost1 = cost1+180 
     return(cost1) 
    } 
    else 
    { 
     return(cost1) 
    }; 
    var body = "Dear" + " " + guardianName + "," + 
    "\n\nThank you for submitting summer school registration for" + " " + studentFirst + " " + studentLast + "." + 
    "\n\nYou have selected the following for Session 1:" + " " + session1 + 
    "\n\nYou have selected the following for Session 2:" + " " + session2 + 
    "\n\nIf any changes need to be made, please contact the office." + 
    "\n\nYour total fees due for summer school are:" + " " + "$" + cost1 + 
    "\n\n\nSummer School Registrar"; 

    if (validEmailAddress) { 

     MailApp.sendEmail(email, subject,body); 
    } 

    } 

回答

0

return總是在JS功能運行的最後一件事,是短路的運行MailApp.sendEmail之前你的函數。此外,JS中的變量是函數作用域。因此,您不需要在if塊內聲明var

下面我使用了三元運算符[test ? if true : else],並將長字符串設置爲一個變量。

你的成本計算應該是這個樣子:

var dcebw = "Driver's Education Classroom & Behind the Wheel"; 

var cost1 = session1 === dcebw ? 400 : 180; 

cost1 += session2 > 0 ? 180 : 0; 
+0

這是美妙的事情!還有一個問題,它發送電子郵件,並報告總成本爲180美元,而不是360美元,如果做出兩個選擇,所以我猜測我的「session2> 0」不能代替「不爲空」 。有沒有辦法解決這個問題?再次感謝你的幫助! –

+0

從你的問題,我會猜測'session2'不是一個數字。如果會話2不是數字,那麼'session2> 0將始終爲假。如果你只是想檢查'session2'是[truthy](http://www.sitepoint.com/javascript-truthy-falsy/),你可以使用'cost1 + = session2? 180:0;' – fooby