是否可以将gmail邮件正文内容附加到同一邮件中也存在的附件中?例如:我有一些正文文本内容和pdf的9页,因此最终对象/ blob可能是10页,其中body作为第一页,其余9页来自附件。
我正在将最终对象上传到Google驱动器上。
或者,当我在Google云端硬盘上创建文件时,还有其他方法可以添加正文内容吗?
mimetype:pdf
var attachment = message.getAttachments()[0];
const folderId = 'MyFolderId';
Drive.Files.insert({
title: attachment.getName(),
mimeType: attachment.getContentType(),
parents: [{ id: folderId }]
},
attachment.copyBlob()
);
所以基本上我将正文转换为pdf,然后使用convertapi将附件pdf合并为1 pdf。
这是将正文文本转换为与电子邮件格式相同的格式的方法
var blobFile = Utilities.newBlob(message.getBody(), 'text/html').getAs('application/pdf').setName('yourfilename.pdf');
然后使用this答案来使用convertapi将这些pdf合并为一个,最后将文件保存到驱动器中。
这是我使用的修改后的合并功能:
function merge(formData) {
var options = {
'method' : 'post',
'payload' : formData,
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch('https://v2.convertapi.com/convert/pdf/to/merge?Secret=<SECRET_KEY>', options);
if(response.getResponseCode() == 200) {
var contentText = JSON.parse(response.getContentText());
var blob = Utilities.base64Decode(contentText.Files[0].FileData);
return blob;
}
return "null";
}
使用合并的fetchcall并将文件保存在驱动器中
var folder = DriveApp.getFolderById("your_folder_id");
var formdata = {};
formdata['Files[0]'] = blobFile.copyBlob();
formdata['Files[1]'] = attachment.copyBlob();
var mergedData = merge(formdata);
if(mergedData == "null") return;
folder.createFile(Utilities.newBlob(mergedData,'application/pdf',"your_file.pdf"));