从我的谷歌电子表格中建立一个电子邮件系统.除了在body上添加一个图像之外,我还有其他一切都在工作



我正试图在电子邮件正文中添加一个图像。除了图像部分,我已经能够使其他一切正常工作。我尝试使用的图像在"m列"中。

我需要添加什么才能从"M列"中获得值并将其放入电子邮件正文?-下方提供代码

提前谢谢。我尝试的一切都失败了,所以我只是删除了我尝试的所有内容,并转到了我决定在电子邮件中添加图像之前的原始内容。

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var numRows = 15;
var dataRange = sheet.getRange(startRow, 1, numRows, 15);
var data = dataRange.getValues();
for (var i in data) {
var row = data[i];
var emailAddress = row[4];
var message = row[10];
var subject = "Subject Test";
MailApp.sendEmail(emailAddress, subject, message);
}
}


[error message][1]

[1]: https://i.stack.imgur.com/nwAJG.png

如果您想发送包含images的电子邮件,可以使用以下选项之一:

  • 如果您的图像以urls的形式存储在电子表格中

以下代码片段用于创建附件,该附件包含从存储在电子表格中的url收集的图像。

var imageUrl = sheet.getRange("YOUR_RANGE_FOR_THE_IMAGE").getValue(); 
var imageBody = "<img src='cid:myImage'>";
var imageBlob = UrlFetchApp.fetch(imageUrl)
.getBlob()
.setName("imageBlob");
var message = row[10];
var subject = "Subject Test";
MailApp.sendEmail({
to: emailAddress, 
subject: subject, 
htmlBody: message +"<br/><br/>"+ imageBody,
inlineImages:{
myImage: imageBlob
}
});

上面的代码片段使用InlineImages将图像作为附件附加到要发送的电子邮件中。

  • 如果您的图像存储在驱动器中,并且您有它们的文件ids

以下代码片段用于创建附件,该附件包含从存储在驱动器中的文件的id收集的图像。

var imageId = sheet.getRange("YOUR_RANGE_FOR_THE_IMAGE").getValue(); 
var image = DriveApp.getFileById(imageId);
var imageBlob = Utilities.newBlob('', 'image/jpeg');
var message = row[10];
var subject = "Subject Test";
MailApp.sendEmail({
to: emailAddress, 
subject: subject, 
body: message,
attachments: [image.getAs(MimeType.JPEG), imageBlob]
});
  • 如果图像存储为inside a cell和/或overgrid images

不幸的是,Google Sheets无法返回图像的blob,只能返回对图像的引用,这意味着您无法检索图像并在之后使用Google Apps Script将其附加到电子邮件中。

在这种情况下,一种替代方法是使用=IMAGE()函数在单元格中插入图像,然后可以使用Sheets API V4检索这些图像。

参考

  • MailApp类应用程序脚本;

  • 图纸类应用程序脚本getRange;

  • DrivApp类应用程序脚本getFileById;

  • 应用程序脚本参考;

  • 表API。

最新更新