【问题标题】:How to paste in an email a table with google script/google sheets Macros?如何在电子邮件中粘贴带有谷歌脚本/谷歌表格宏的表格?
【发布时间】:2019-07-20 11:15:04
【问题描述】:

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

    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);

}

Here you have an image of what i need to send via email.

行随着数据而变化,所以表格取决于一天中有多少操作..

【问题讨论】:

  • 说某事不起作用并没有帮助。请阅读How to Askminimal reproducible example
  • 我写道我认为这部分不起作用“问题是这一行 var sigla1 = sheet.getRange(2,4,filas,columnas).getValues(); 我必须将其粘贴为一个表,而不是值。我该怎么做?"...

标签: google-apps-script google-sheets


【解决方案1】:

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})

}

【讨论】:

  • 但是使用该代码,我如何选择要发送的谷歌表格(计算表格)的范围?
  • 我不清楚您希望将哪些数据制成表格,以及您希望使用哪些数据来发送电子邮件。而且由于您的桌子大多是西班牙语,因此查看它们的图像对我没有帮助,因为我不会说西班牙语。
  • 对不起我的英语,我来自阿根廷。我有那个从其他工作表获取信息的表,所以行数整天都在变化。我需要发送该表以获取所有行。为此,我使用了一个计算行数的公式“var sigla1 = sheet.getRange(2,4,filas,columnas).getValues();”。但问题是它将表格粘贴为文本。我需要以表格格式粘贴它..
  • 如果我可以看看你的电子表格,也许我能弄清楚你想要完成什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 2021-06-03
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多