0

以下代碼爲第2和第3列中的數據發送電子郵件,但電子郵件中的結果不是一個在另一個之下。在電子郵件中收到從Google電子表格發送電子郵件作爲電子郵件(格式問題)

Code.gs 
function email() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var bulk = ss.getSheetByName("Bulk"); 
    var lastrow = bulk.getLastRow(); 

    var data1 = bulk.getRange(1, 2, lastrow).getValues(); 
    var data2 = bulk.getRange(1, 3, lastrow).getValues(); 

    var onedata="", twodata=""; 

    for (var i =1; i < data1.length; i++) { 
    if (onedata.length) { 
       onedata += ", "; 
    } 
    onedata += data1[i] 
    } 

    for (var i =1; i < data2.length; i++) { 
    if (twodata.length) { 
       twodata += ", "; 
    } 
    twodata += data2[i] 
    } 

    var report = "" 

    report += "<tr><td style='padding:5px'>" + onedata + "</td><td style='padding:5px'>" + twodata + "</td></tr>"; 


    report ="<table><tr><th'>First data</th><th>Second data</th></tr>" + report + "</table>"; 

    MailApp.sendEmail(Session.getActiveUser().getEmail(), 
        "Your report", report, {htmlBody: report}); 

    } 

結果

First data     Second data 
Apple, Orange, Grapes,  Red, Orange, Green, Yellow, 
Banana, Chickoo    Grey 

結果預計

First data Second data 
Apple  Red 
Orange  Orange 
Grapes  Green 
Banana  Yellow 
Chickoo  Grey 

回答

1

你犯了一個小錯誤在for循環。

在這裏你的代碼有一些小的修改:

function email() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var bulk = ss.getSheetByName("Bulk"); 
    var lastrow = bulk.getLastRow(); 

    var data1 = bulk.getRange(1, 2, lastrow).getValues(); // fruit column 
    var data2 = bulk.getRange(1, 3, lastrow).getValues(); // color column 

    var report = "" 
    var fruitTable =""; 
    for(var i in data1){ 
    if(data1[i]!="") fruitTable += "<tr><td style='padding:5px'>" + data1[i] + "</td><td style='padding:5px'>" + data2[i] + "</td></tr>"; 
    } 

    report ="<table><tr><th>First data</th><th>Second data</th></tr>" + fruitTable + "</table>"; 

    MailApp.sendEmail(Session.getActiveUser().getEmail(), 
        "Your report", report, {htmlBody: report}); 
} 

我希望這將響應您的需求。
哈羅德

+0

哎呀,對不起,我們幾乎在同步!有趣的,但我們得出了非常相似的代碼^^ –

+1

哈哈!事實上,我們的答案非常相似,但在閱讀完代碼之後,我必須承認你的答案在「空洞」聲明中更「性感」。 – Harold

+0

我搜索了Google的「性感代碼」的定義,但沒有發現任何內容:-)應該在某處發佈定義......謝謝,我感謝! –

1

表結構有一些錯誤,下面是一個簡單的循環代碼,隨時適應它,你想要的方式...因爲這是它加入我用來做我的測試的幾個特點容易...(樣式+條件)

function email() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var bulk = ss.getSheetByName("Bulk"); 
    var lastrow = bulk.getLastRow(); 
    var data = bulk.getRange(1, 2, lastrow,2).getValues(); 
    var tableData = "<table border=1><th>First data</th><th>Second data</th>" 

    for (var i =1; i < data.length; i++) { 
    var d1=data[i][0]==''?'empty ':data[i][0]; 
    var d2=data[i][1]==''?'empty ':data[i][1]; 
    tableData+="<tr><td>"+d1+"</td><td>"+d2+"</td></tr>" 
    } 
    tableData+="</table>"; 

    MailApp.sendEmail(Session.getActiveUser().getEmail(), 
        "Your report", "html only", {htmlBody: tableData}); 
} 

編輯:

以哈羅德的答案的優勢我增加了一些風格,使其更 「性感」 ;-)

function email() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var bulk = ss.getSheetByName("Bulk"); 
    var lastrow = bulk.getLastRow(); 
    var data = bulk.getRange(1, 2, lastrow,2).getValues(); 
    var tableData = '<TABLE style="border-collapse:collapse;"border = 1 cellpadding = 5 ><th style=color:blue>First data</th><th style=color:green>Second data</th>' 

    for (var i =1; i < data.length; i++) { 
    var d1=data[i][0]==''?'empty':data[i][0]; 
    var d2=data[i][1]==''?'empty':data[i][1]; 
    tableData+="<tr><td style=color:blue>"+d1+"</td><td style=color:green>"+d2+"</td></tr>" 
    } 
    tableData+="</table>"; 

    MailApp.sendEmail(Session.getActiveUser().getEmail(), 
        "Your report", "html only", {htmlBody: tableData}); 
} 
+1

感謝Serge,它的作品非常完美,而且它看起來也很性感。對於日期格式的任何幫助,我有10/2/2014(2月10日),但結果是「2014年10月2日00:00:00 GMT + 0530(IST)」。我們能否改爲「2月10日」? :) – Vasim

+2

您可以使用[Utilities.formatDate()](https://developers.google.com/apps-script/reference/utilities/utilities#formatDate(Date,String,String))來格式化日期。 –

+0

Vasim,你如何解決這個問題「」2014年10月2日星期四00:00:00 GMT + 0530(IST)「」?你能告訴我你如何改變格式? In My casie:專欄有「29/11/2016 10:00」並出現「Tue Nov 29 2016 10:00:00 GMT-0300(ART)」 –