【问题标题】:Google Script - add Gmail Attachment to document and Process in Drive谷歌脚本 - 将 Gmail 附件添加到驱动器中的文档和进程
【发布时间】:2015-01-04 01:27:20
【问题描述】:

所以基本上,我父亲让我创建一个脚本来查找带有“驱动器”标签的电子邮件并将其内容保存到他的驱动器。 (如果你问为什么,这样他就可以通过电子邮件给自己发送几个 PDF 并让脚本自动将它们放在他的驱动器中)

我已经完成了所有的事情,除了一件事:不知道如何保存附件。 在processDocument 方法中,我遍历附件并尝试这样做:

doc.appendParagraph(the attachment)

有没有使用processDocument()方法添加附件的正确方法?

代码链接: http://pastebin.com/RwFNs232

谢谢。

【问题讨论】:

  • 发布您正在使用的代码以获得更好的答案是个好主意!您在使用 Gmail 服务阅读邮件吗?
  • nanndoj,是的,我正在使用 gmail 服务。我通过搜索所有具有附件和标签驱动器的线程来做到这一点。

标签: javascript google-apps-script google-drive-api email-attachments


【解决方案1】:

您可以使用 DriveApp 将附件 blob 保存在单独的文件中:

var fileBlob = "your blob" // GmailAttachment.copyBlob() method;
var file = DriveApp.createFile(blob);

然后在你的文档中写下附件的链接

doc.appendParagraph(file.getUrl());

注意:

您可能希望在文档中写入附件内容。在这种情况下,您可以直接写入文档,而无需在云端硬盘中创建文件。但这很危险,因为您无法将某些 blob 的内容作为格式良好的字符串获取。

doc.appendParagraph("attachment content"); //GmailAttachment.getDataAsString() 

我认为它会解决你的问题。

【讨论】:

  • 谢谢,所以基本上我可以创建文件,将其放入文档中,然后将其删除?马上试一试。
  • 没有。在此示例中,您正在编写指向之前保存在云端硬盘中的文件的链接!我假设您在文档中编写电子邮件内容,然后是 URL。如果你想写内容而不是 url,你可以试试 GmailAttachment.getDataAsString() 方法,看看它是否有效
  • 哦,甚至没有看到那里的getUrl!速度很快。生病修改我的代码来处理这个问题。感谢我得到的最快答复!
  • nanndoj,一个快速的问题:是否有适当的移动功能?我找不到将某个文件从某处移动到某处的任何函数,我现在只是将其复制并删除旧文件。
  • 这是个好问题。我总是使用 File.makeCopy(destination);但它会更改文件 ID。您可以将其作为一个单独的问题提出。
【解决方案2】:

正如@nanndoj 所说,您应该使用blob 文件结构来输入文件。有关 blob 的其他信息应作为单独的问题提出。

但是,附件不应仅附加到电子邮件的doc。相反,您应该在 sendEmail 函数的调用中包含 blob 引用,如 Google's documentation here 中所示。

示例:

sendEmail(recipient, subject, body, options)

MailApp.sendEmail('mike@example.com', 'Attachment example', 'Two files are attached.', {
     name: 'Automatic Emailer Script',
     attachments: [file.getAs(MimeType.PDF), blob]
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    相关资源
    最近更新 更多