首页 > 解决方案 > 如何在电子邮件中粘贴带有谷歌脚本/谷歌表格宏的表格?

问题描述

我有这个宏可以向某些人发送电子邮件。问题在于它将表格粘贴到值中,而不是表格格式。我需要将表格粘贴为表格。

    function Mails() {
 var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
 var filas= values[0][1];
 var columnas= values[1][0];

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 ss.setActiveSheet(ss.getSheetByName("Enviar"));
 var sheet = SpreadsheetApp.getActiveSheet();
 var dataRange = sheet.getRange(2,4,filas,columnas);
 var data = dataRange.getValues();

 for (i in data) {
 var rowData = data[i];
 var emailAddress = sheet.getRange(1, 3).getValue();
 var destinatario = rowData[0];
 var sigla1 = sheet.getRange(2,4,filas,columnas).getValues();
 var mensaje = 'Estimado ' + destinatario + ',\n\n' + sigla1 ;
 var asunto = 'Mensajes Pendientes';
 MailApp.sendEmail(emailAddress, asunto, mensaje);
 }
}

function onOpen () {
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [
{name: 'Send Emails', functionName: 'Mails'}
];
spreadsheet.addMenu('Enviar Emails', menuItems);

}

问题是这一行 var sigla1 =sheet.getRange(2,4,filas,columnas).getValues(); 我必须将其粘贴为表格,而不是值。我怎样才能做到这一点?

谢谢

我现在正在尝试使用此代码..但它不起作用..

function Mails() {

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 ss.setActiveSheet(ss.getSheetByName("Enviar"));
 var sheet = SpreadsheetApp.getActiveSheet();

 var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
 var filas= values[0][1];
 var columnas= values[1][0];

 var recipient = sheet.getRange(1, 3).getValue();
 var subject = 'Estimado';

 var vA=SpreadsheetApp.getActive().getSheetByName('Enviar').getDataRange().getValues();
 var html="<style>th,td{border:1px solid black;}<table>";
 for(var i=0;i<vA.length;i++) {
    html+="<tr>";
    for(var j=0;i<vA[i].length;j++) {
      if(i==0) {
        html+=Utilities.formatString('<th>%s</th>', vA[i][j]);
      }else{
        html+=Utilities.formatString('<td>%s</td>', vA[i][j]);
      }
    }
    html+="</tr>";
  }

  GmailApp.sendEmail(recipient, subject, null, {htmlBody:html})

}

function onOpen () {
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [
{name: 'Send Emails', functionName: 'Mails'}
];
spreadsheet.addMenu('Enviar Emails', menuItems);

}

在这里,您有一张我需要通过电子邮件发送的图片。

行随数据而变化,因此该表取决于一天中有多少操作..

标签: google-apps-scriptgoogle-sheets

解决方案


将 HTML 表格转换为电子邮件

function sendHtmlTableViaEmail() {
  var vA=SpreadsheetApp.getActive().getSheetByName('name').getDataRange().getValues();
  var html="<style>th,td{border:1px solid black;}<table>";
  for(var i=0;i<vA.length;i++) {
    html+="<tr>";
    for(var j=0;i<vA[i].length;j++) {
      if(i==0) {
        html+=Utilities.formatString('<th>%s</th>', vA[i][j]);
      }else{
        html+=Utilities.formatString('<td>%s</td>', vA[i][j]);
      }
    }
    html+="</tr>";
  }
 //You have to add the code for recipient and subject
  GmailApp.sendEmail(recipient, subject, null, {htmlBody:html})

}

推荐阅读