Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自电子表格的数据不';t在电子邮件正文中填充_Javascript_Email_Google Sheets_Datatable_Automation - Fatal编程技术网

Javascript 来自电子表格的数据不';t在电子邮件正文中填充

Javascript 来自电子表格的数据不';t在电子邮件正文中填充,javascript,email,google-sheets,datatable,automation,Javascript,Email,Google Sheets,Datatable,Automation,我试图定期通过电子邮件发送一些详细信息,但我的脚本似乎不太好用。我只需要点击一个按钮就可以发送A3:C7的显示值,但是电子邮件并没有像我的电子表格上那样显示出来。我对编码是个新手。代码如下: 函数sendReport(){ var sheet=SpreadsheetApp.getActiveSpreadsheet(); var raw=sheet.getSheetByName(“原始数据”); var subType=raw.getRange('C3'); var jobType=subTyp

我试图定期通过电子邮件发送一些详细信息,但我的脚本似乎不太好用。我只需要点击一个按钮就可以发送A3:C7的显示值,但是电子邮件并没有像我的电子表格上那样显示出来。我对编码是个新手。代码如下:

函数sendReport(){
var sheet=SpreadsheetApp.getActiveSpreadsheet();
var raw=sheet.getSheetByName(“原始数据”);
var subType=raw.getRange('C3');
var jobType=subType.getValue();
var subID=raw.getRange('C4');
var jobID=subID.getValue();
var subBody=sheet.getSheetByName('Email sheet');
var body1=subBody.getRange('A3:C7');
var body=body1.getDisplayValues();
var subject=“RCA报告”+作业类型+“-”+作业ID
var message=“嗨,下面是“+主题
var closing=“如需任何澄清,请随时联系任何QA。谢谢!”;
var emailBody=消息+正文+结束;
MailApp.sendEmail(“sample@sample.com“、主题、正文)

};
要在电子邮件中的表格中提供电子表格数据,可以在电子邮件正文中构建HTML
,并将电子表格中的数据填充到HTML表格中

为此,您需要迭代选定电子表格范围内的数据

目前您有:

var body1 = subBody.getRange('A3:C7');
要迭代此数据,可以使用2个循环。第一个将遍历每一行,第二个将遍历当前行中的每个单元格:

var dataRows = body1.getValues();
for (var i = 0; i < dataRows.length; i++) {
  var dataRow = dataRows[i];
  for (var j = 0; j < dataRow.length; j++) {
    var cellContents =  dataRow[j];
  }
}
这里,我们显式地使用
htmlBody
作为主体参数,而不是默认的纯字符串参数

假设以下输入:

这将生成以下电子邮件正文:


在我的示例中,我只为表提供了最基本的样式,以显示每个单元格周围的黑色边框线,并使用一些单元格填充。显然,您可以将其更改为您希望使用的任何样式。

看起来您已经拍摄了计算机屏幕的照片,然后在链接中提供了该图像。不要这样做,您应该在问题的主体中以文本形式提供代码(使用适当的格式)。你可以提出你的问题,看看你可以使用的选项。如果你还没有这样做,你可以阅读。具体来说,您可能希望通过提问来澄清您所说的“似乎不起作用”和“在我的电子表格上显示的方式不完全相同”的意思。另外,请记住,您没有与我们共享任何电子表格数据,因此我们并不真正知道您希望在格式化的电子邮件中看到什么。另请参见。@andrewjames谢谢你的提示。我已经更新了我的帖子。
var style = 'style="border: 1px solid black; border-collapse: collapse; padding: 5px;"';
var tableOutput = '<br><br><table ' + style + '>';

var dataRows = body1.getValues();
for (var i = 0; i < dataRows.length; i++) {
  tableOutput = tableOutput + '<tr>';
  var dataRow = dataRows[i];
  for (var j = 0; j < dataRow.length; j++) {
    var cellContents = dataRow[j];
    tableOutput = tableOutput + '<td ' + style + '>' + cellContents + '</td>';
  }
  tableOutput = tableOutput + '</tr>';
}
tableOutput = tableOutput + '</table><br>';
var emailBody  = message +  tableOutput + closing;
MailApp.sendEmail({
  to: "sample@sample.com",
  subject: subject,
  htmlBody: emailBody
});