2012-05-07 60 views
0

我有一個帶有數據表的googledocs電子表格。表格填寫完畢後,我的腳本將獲取數據並通過電子郵件發送。我擁有的代碼將從數據範圍中獲取我想要的每個值,並將其放入一個表中,但這一切都是通過識別超過一百個變量來完成的。Google腳本:使用電子表格數據在電子郵件中填充html表格

有沒有辦法使用某種數組,以便使用數據範圍中的每行數據填充html表?

我自由地承認是一個編程新手,這可能是一些最糟糕的意大利麪代碼。任何幫助非常感謝(即使它是JavaScript的入門)。

function Gradereport() { 

//這個腳本電子郵件的形式,內容到某一接受

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Report"); 
var recloc = sheet.getRange("D2"); //cell location of student email 
var recipient = recloc.getValue(); //student's email address 
var lastloc = sheet.getRange("B2"); 
var last = lastloc.getValue(); 
var firstloc = sheet.getRange("A2"); 
var first = firstloc.getValue(); 
var courseloc = sheet.getRange("E2"); 
var course = courseloc.getValue(); 
var dateloc = sheet.getRange("C2"); 
var date = dateloc.getValue(); 
var gradeloc = sheet.getRange("D5"); 
var grade = gradeloc.getValue(); 
var totloc = sheet.getRange("D4"); 
var total = totloc.getValue(); 
var perloc = sheet.getRange("D6"); 
var percent = perloc.getValue(); 
var dataRange = sheet.getRange("A4:B9"); 
var data = dataRange.getValues(); 
// assignment cell locations 
var assignloc1 = sheet.getRange("A5"); 
var assignloc2 = sheet.getRange("A6"); 
var assignloc3 = sheet.getRange("A7"); 
var assignloc4 = sheet.getRange("A8"); 
var assignloc5 = sheet.getRange("A9"); 
// assignment values 
var assign1 = assignloc1.getValue(); 
var assign2 = assignloc2.getValue(); 
var assign3 = assignloc3.getValue(); 
var assign4 = assignloc4.getValue(); 
var assign5 = assignloc5.getValue(); 
// assignment score locations 
var scoreloc1 = sheet.getRange("B5"); 
var scoreloc2 = sheet.getRange("B6"); 
var scoreloc3 = sheet.getRange("B7"); 
var scoreloc4 = sheet.getRange("B8"); 
var scoreloc5 = sheet.getRange("B9"); 
// assignment score values 
var score1 = scoreloc1.getValue(); 
var score2 = scoreloc2.getValue(); 
var score3 = scoreloc3.getValue(); 
var score4 = scoreloc4.getValue(); 
var score5 = scoreloc5.getValue(); 

    // error message 
var errmess = first+' '+last+', your Pin code did not match. Please double check your entry and re-submit. Contact your professor if you get this message again.'; 
var subject = course+' Grade Report'; 
var body = first+' '+last+', here is your grade report, requested on '+date+'. Grade '+grade+'/'+total+', '+percent+'%. Score breakdown: '+data; 
var bodyHTML1 = '<p>'+first+' '+last+', here is your grade report.<br> Grade '+grade+'/'+total+', '+percent+'%.</p>'; 
// var bodyHTML2 = '<p>'+data+'</p>'; 
var bodyHTML2 = '<table> <tr> <td> '+assign1+' </td> <td> '+score1+' </td> </tr> <tr> <td> '+assign2+' </td> <td> '+score2+' </td> </tr> <tr> <td> '+assign3+' </td> <td> '+score3+' </td> </tr> <tr> <td> '+assign4+' </td> <td> '+score4+' </td> </tr> <tr> <td> '+assign5+' </td> <td> '+score5+' </td> </tr> </table>'; 

var bodyHTML3 = '<p>Sent by the <a href="http://www.steegle.com/">Steegle.com</a> Contact Us Form Google Apps Script</p>'; 
var advancedArgs = {htmlBody:bodyHTML1+bodyHTML2 ,}; 
var pinloc = sheet.getRange("G2"); 
var pin = pinloc.getValue(); 

if(pin == 1){  
MailApp.sendEmail(recipient, subject, body, advancedArgs); 
}else{ 
MailApp.sendEmail(recipient, subject, errmess); 
} 
} 

回答

2

我已經走上了自由,使你的代碼的一些變化,與環沿生成表,那就是:

function report2() { 
    var LOC = { 
    recipient: [1,3],//D2 
    first: [1,0], //A2 
    last: [1,1],  //B2 
    course: [1,4], //E2 
    date: [1,2],  //C2 
    grade: [4,3], //D5 
    total: [3,3], //D4 
    percent: [5,3], //D6 
    }; 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Report"); 
    var values = sheet.getDataRange().getValues(); //get all values on the spreadsheet at once 
    var data = {}; 
    for(var i in LOC) //row  //column (all zero-based index) 
    data[i] = values[ LOC[i][0] ][ LOC[i][1] ]; 

    var errmess = data.first+' '+data.last+', your Pin code did not match. Please double check your entry and re-submit. Contact your professor if you get this message again.'; 
    var subject = data.course+' Grade Report'; 
    var body = data.first+' '+data.last+', here is your grade report, requested on '+data.date+'. Grade '+data.grade+'/'+data.total+', '+data.percent+'%. Score breakdown: '+data.data; 
    var bodyHTML1 = '<p>'+data.first+' '+data.last+', here is your grade report.<br> Grade '+data.grade+'/'+data.total+', '+data.percent+'%.</p>'; 

    var bodyHTML2 = '<table>'; 
    for(var i = 4; i < 9; ++i) 
    bodyHTML2 += '<tr><td> '+values[i][0]+' </td><td> '+values[i][1]+' </td></tr>'; 
    bodyHTML2 += '</table>'; 

    var advancedArgs = {htmlBody: bodyHTML1+bodyHTML2}; 
    var pin = values[1][6]; //G2 
    if(pin == 1) 
    MailApp.sendEmail(recipient, subject, body, advancedArgs); 
    else 
    MailApp.sendEmail(recipient, subject, errmess); 
} 

我已經開發了一個腳本發送基於電子表格數據的電子郵件,例如你想。我想你可能會覺得它很有用。它被稱爲FormEmailer。您可以在腳本庫(在菜單插入>腳本下)和其site上找到它。

相關問題