我正试图在电子邮件正文中添加一个图像。除了图像部分,我已经能够使其他一切正常工作。我尝试使用的图像在"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。