Email Google Sheet cells and format -


background: teacher. gave test through forms. graded test using various background colors on each cell (which represented answer question student). each row of sheet has email address in column b.

problem: email entire row, including formatting, address in column b each student has record of answers , how graded them.

question: how can email row of data, including formatting?

i working following script, works emailing single cell without formatting:

`function sendemails() {   var sheet = spreadsheetapp.getactivesheet();   var startrow = 2;  // first row of data process   var numrows = 1;   // number of rows process   // fetch range of cells a2:b3   var datarange = sheet.getrange(startrow, 1, numrows, 2)   // fetch values each row in range.   var data = datarange.getvalues();   (i in data) {     var row = data[i];     var emailaddress = row[1];  // second column     var message = row[0];       // want whole row, including formatting.     var subject = "sending emails spreadsheet";     mailapp.sendemail(emailaddress, subject, message);     contentservice.createtextoutput("hello world!");   } }` 

here is.

i decided add function makes little cleaner. you'll able adjust styles of output playing css styles. if keep commented lines can use them debugging. tested code them , looks good. let me know how works on emails.

  function sendemails()    {   var br='<br />';   var sheet=spreadsheetapp.getactivesheet();     var datarange=sheet.getdatarange();   var dataa=datarange.getvalues();   var backa=datarange.getbackgrounds();   //var s='';//please leave commented lines.  if needed future handy have   (var i=1;i<dataa.length;i++)    {     var emailaddress=dataa[i][1];       var message=formatrow(sheet.getname(),dataa[i],backa[i],dataa[0]);     var subject="sending emails spreadsheet";     //s+=br + '<strong>emailaddress:</strong>' + emailaddress + br + '<strong>subject:</strong>' + subject + br + message + '**************************************' + br;     mailapp.sendemail({to:emailaddress,subject:subject,htmlbody:message});    }   //var userinterface=htmlservice.createhtmloutput(s);   //spreadsheetapp.getui().showmodelessdialog(userinterface, 'email message') } 

i noticed yellow background added section it.

   //assume timestamp,emailaddres,score,firstname,lastname,section... function formatrow(sheetname,rowa,rowbacka,titlea) {   var br='<br />';   var ss=spreadsheetapp.getactive();   var sh=ss.getsheetbyname(sheetname);   var html='';   if(rowa && rowbacka)   {     html='';     for(var j=0;j<rowa.length;j++)     {       switch(rowbacka[j])       {         case '#ff0000':           html+=br + '<span style="font-weight:600;font-size:20px;">' + titlea[j] + ':</span>' + br + '<span style="background-color:#ff0000;">' + rowa[j] + '</span>' + br;           break;         case '#ffff00':           html+=br + '<span style="font-weight:600;font-size:20px;">' + titlea[j] + ':</span>' + br + '<span style="background-color:#ffff00;">' + rowa[j] + '</span>' + br;           break;         case '#ffffff':           html+=br + '<span style="font-weight:600;font-size:20px;">' + titlea[j] + ':</span>' + br + '<span style="background-color:#ffffff;">' + rowa[j] + '</span>' + br;           break       }     }   }   return html; } 

just reminder i'm using #ff0000 red don't change different shade without making change code.

in event 1 student's email gets eaten dog, might send 1 email.

function sendoneemail(firstname,lastname)  {   if(firstname && lastname)   {     var br='<br />';     var sheet=spreadsheetapp.getactivesheet();       var datarange=sheet.getdatarange();     var dataa=datarange.getvalues();     var backa=datarange.getbackgrounds();     //var s='';//please leave commented lines.  if needed future handy have     (var i=1;i<dataa.length;i++)      {       if(firstname==dataa[i][3] && lastname==dataa[i][4])       {         var emailaddress=dataa[i][1];           var message=formatrow(sheet.getname(),dataa[i],backa[i],dataa[0]);         var subject="sending emails spreadsheet";         //s+=br + '<strong>emailaddress:</strong>' + emailaddress + br + '<strong>subject:</strong>' + subject + br + message + '**************************************' + br;         mailapp.sendemail({to:emailaddress,subject:subject,htmlbody:message});        }     }     //var userinterface=htmlservice.createhtmloutput(s);     //spreadsheetapp.getui().showmodelessdialog(userinterface, 'email message')   } } 

here's birds eye view of spreadsheet.

enter image description here


Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -