【问题标题】:Google Sheets Send Range as EmailGoogle 表格以电子邮件形式发送范围
【发布时间】:2018-03-03 00:30:38
【问题描述】:

我正在尝试将特定范围作为 Pdf 附件或 HTML 表格发送到电子邮件中,单元格 a2 将包含电子邮件,并且消息应该在 C7:I25 范围内,这是我目前所拥有的,我收到错误消息,找不到收件人,您能帮帮我吗?

function correoe() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  
  var numRows = 2;   
  var dataRange = sheet.getRange(startRow, 1, numRows, 5)
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];  
    var message = sheet.getRange ("C7:I25");
    var subject = "Su Cotizacion";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

【问题讨论】:

  • 以上代码在A2A3单元格中查找电子邮件。您有A3 的电子邮件地址吗?我相信 A3 中没有电子邮件,因此您的 emailAddress 变量为空,因此您收到错误 no Recipient found。请分享您的电子表格外观示例,以了解您想要实现的目标。
  • 非常感谢您的回复,我要做的就是从工作表查询中复制范围 C7:I25 并将其作为图片或 HTML 表格通过电子邮件发送到位于 A2 上的地址从表格电子邮件中,在文件下方,以便您有更好的想法:docs.google.com/spreadsheets/d/…

标签: email google-apps-script google-sheets


【解决方案1】:

您需要一些函数来从单元格中获取 html 文本。

var data = sheet.getRange ("C7:I25").getValues();
var message = getTable(data);

函数getTable 可能如下所示:

  function getTable(data) {
    var result = ["<table border=1'>"];
    var ll = data[0].length;
    var row = 0;
    for(var i = 0, l = data.length; i < l; i++) {
        row = data[i];
        result.push("<tr>");
        for(var ii = 0; ii < ll; ii++){
            result.push('<td>' + row[ii] + '</td>');
        }
        result.push("</tr>");
    }
    result.push("</table>");
    return result.join('\n');
  }

测试

虚拟数据

[["row 1, cell 1", "row 1, cell 2"], 
 ["row 2, cell 1", "row 2, cell 2"]];

虚拟 HTML 文本输出

<table border=1'>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table

用法

需要使用这种语法发送邮件:

 MailApp.sendEmail({
     to: emailAddress,
     subject: subject,
     htmlBody: message
 });

【讨论】:

  • 有时您需要一些格式,因为您需要通过电子邮件传递的信息是数据透视表,所以我做了一个简单的更改。
猜你喜欢
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多