将内容从正文添加到Google脚本中的gmail附件

问题描述 投票:1回答:1

是否可以将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()
  );
google-apps-script
1个回答
0
投票

所以基本上我将正文转换为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"));
© www.soinside.com 2019 - 2024. All rights reserved.