2012-05-07 5 views
0

데이터 테이블이있는 googledocs 스프레드 시트가 있습니다. 양식을 작성하고 나면 스크립트에서 데이터를 가져 와서 전자 메일로 보냅니다. 데이터 범위에서 원하는 각 값을 가져 와서 테이블에 집어 넣을 코드가 있지만 100 개가 넘는 변수를 식별하면됩니다.Google 스크립트 : 스프레드 시트 데이터를 사용하여 이메일에 html 테이블 채우기

html 테이블에 데이터 범위의 각 데이터 행이 채워지도록 배열을 사용하는 방법이 있습니까?

나는 프로그래밍 초보자라는 것을 자유롭게 인정하고 있으며, 아마도 이것이 최악의 스파게티 코드 일 것입니다. 모든 도움이 크게 (비록 자바 스크립트에 입문서) 감사하겠습니다.

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에 있습니다.