INSÉRER UN TABLEAU PROVENANT D'UNE FEUILLE DANS UN COURRIEL

Lors d'une envoi d'une partie d'informations par courrier électronique, la solution est de la faire en fichier attaché au format pdf par exemple.

Une autre solution plus conviviale est d'inclure dans le corps du courriel le tableau de données.

Le script suivant respecte les couleurs, polices, tailles de caractères et cellules fusionnées comme dans l'exemple joint.






function sendEmail() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(feuille)
  var plage = sh.getDataRange()
  MailApp.sendEmail({
    to'nom@email.com',
    subject'Titre du courriel',
    htmlBodytableHTMLplus(plage)
  })
};
function tableHTMLplus(range){
  var data      = range.getDisplayValues()
  var size      = range.getFontSizes()
  var style     = range.getFontStyles()
  var weight    = range.getFontWeights()
  var line      = range.getFontLines()
  var bg        = range.getBackgrounds()
  var color     = range.getFontColors()
  var font      = range.getFontFamilies()
  var textalign = range.getHorizontalAlignments()
  var offsetx   = range.getRow()
  var offsety   = range.getColumn()

  var mergedRanges = range.getMergedRanges();
  var flag = Array.from({ lengthrange.getNumRows() }, () => Array.from({ lengthrange.getNumColumns() }, () => true));
  var layout = Array.from({ lengthrange.getNumRows() }, () => Array.from({ lengthrange.getNumColumns() }, () => ''));
  mergedRanges.forEach((rng,i) => {
    for (x=rng.getRow();x<rng.getRow()+rng.getNumRows();x++){
      for (y=rng.getColumn();y<rng.getColumn()+rng.getNumColumns();y++){
        try{flag[x-offsetx][y-offsety]=false}catch(e){}
      }
    }
    flag[rng.getRow()-offsetx][rng.getColumn()-offsety]=true
    layout[rng.getRow()-offsetx][rng.getColumn()-offsety]=' colspan="'+rng.getNumColumns()+'" rowspan="'+rng.getNumRows()+'" '
  });

  var tableformat = 'cellspacing="2" cellpadding="2" border="1" style="width:100%;border-collapse:collapse;border:1px solid #ccc';
  var htmltable = '<table ' + tableformat +' ">';
  for (row = 0row<data.lengthrow++){
    htmltable += '<tr>';
    for (col = 0 ;col<data[row].lengthcol++){
      if (flag[row][col]){
        if (data[row][col] === '') {
          htmltable += '<td '+layout[row][col]+' style="background-color:' + bg[row][col] + ';">' + '&nbsp;' + '</td>';
        } 
        else
          htmltable += '<td '+layout[row][col] + 
          ' style="font-family:' + font[row][col] + 
          '; background-color:' + bg[row][col] + 
          '; color:' + color[row][col] + 
          '; font-style:' + style[row][col] + 
          '; font-weight:' + weight[row][col] + 
          '; text-decoration:' + line[row][col] + 
          '; font-size:' + size[row][col] + 'px' +
          '; text-align:' + textalign[row][col] + ';">' + 
          data[row][col].replace(/(\r\n|\n|\r)/gm,"<br>") + '</td>';
        }
      }
    htmltable += '</tr>';
  }
  htmltable += '</table>';
  return htmltable
}

Commentaires

Posts les plus consultés de ce blog

NAVIGUER AU SEIN D'UN FICHIER À L'AIDE D'UN MENU DÉROULANT

METTRE À DISPOSITION DES INFORMATIONS SANS ACCÈS AU FICHIER COMPLET