2013-09-29 20 views
1

我做了一個有很多領域的谷歌形式。我已經把觸發器發送到一個特定的表單值(也保存在Excel表格在谷歌驅動器)。但它也給我發送了空白值,用戶沒有選擇。我應該如何通過修改下面的代碼發送填充值到郵件。如何郵寄只填充值,而不是谷歌形式的空白值?

function Initialize() { 

    var triggers = ScriptApp.getScriptTriggers(); 

    for(var i in triggers) { 
    ScriptApp.deleteTrigger(triggers[i]); 
    } 

    ScriptApp.newTrigger("SendGoogleForm") 
    .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) 
    .onFormSubmit() 
    .create(); 

} 

function SendGoogleForm(e) 
{ 
    try 
    { 
    var email ="[email protected]"; 

    var subject = "Form Submission"; 

    var s = SpreadsheetApp.getActiveSheet(); 
    var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];  
    var message = "";  
    for(var i in headers) { 

     message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 
    } 

    message += "Sheet URL :: " + SpreadsheetApp.getActiveSpreadsheet().getUrl() + "\n"; 

    MailApp.sendEmail(email, subject, message); 

    } catch (e) { 
    Logger.log(e.toString()); 
    } 

} 

請幫助我該怎麼做。謝謝:)

回答

1

另一種方式做,這是一個三元聲明:

message += e.namedValues[headers[i]] != "" ? e.namedValues[headers[i]].toString() + "\n\n" : ""; 

我用這個氣/ JavaScript的腳本,從得到的電子郵件發送多餘的數據保持。

0

我發現了我的問題的方式。這只是在for循環中添加一個簡單的if語句。

解決方案:

for(var i in headers) 
{ 
     if(e.namedValues[headers[i]].toString() != "") //Add this line. 
     { 
     message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 
     } 
    }