使用谷歌脚本通过电子邮件发送 docx 文件

email a docx file with googlescript

我只是使用 google 脚本的初学者,如果这是一个非常愚蠢的问题,请多多包涵:)

我的脚本当前通过电子邮件发送一个 pdf,它是从 google 驱动器文件创建的,如下所示:

var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");

我还想通过电子邮件发送一个 docx 文件,但这当然不太容易。 我找到了一种方法:

Using Google Script to send an email with a Word doc attachment

...但它似乎使用了不再有效的旧解决方案。代码:

var url = 'https://docs.google.com/feeds/';
var doc = UrlFetchApp.fetch(url+'download/documents/Export?exportFormat=doc&format=doc&id='+copyId,
googleOAuth_('docs',url)).getBlob();

错误:

Execution failed: ReferenceError: "googleOAuth_" is not defined.

我使用的方法是否正确但有误,还是有更好的方法导出 docx?

非常感谢您的帮助和耐心等待!

如果您仍在寻找解决方案,这个答案怎么样?为了将 Google 文档转换为 docx 并导出 docx,请使用访问令牌。在您的情况下,您可以使用 ScriptApp.getOAuthToken() 作为访问令牌。那么下面的修改呢?

发件人:

var url = 'https://docs.google.com/feeds/';
var doc = UrlFetchApp.fetch(url+'download/documents/Export?exportFormat=doc&format=doc&id='+copyId,
googleOAuth_('docs',url)).getBlob();

收件人:

var url = "https://docs.google.com/feeds/download/documents/export/Export?id=" + copyId + "&format=docx&access_token=" + ScriptApp.getOAuthToken();
var docx = UrlFetchApp.fetch(url).getBlob();

注:

  • 您可以使用访问令牌作为查询参数。
  • 在您的问题中,您需要一个 docx 文件。但是在您的脚本中,您似乎想要一个 doc 文件。
    • 在此修改中,使用了docx。如需doc文件,请自行修改
  • 在修改后的脚本中,docx是docx的blob。请使用它代替脚本的 pdf

如果我误解了你的问题,我很抱歉。

更新时间:2020 年 2 月 7 日

从 2020 年 1 月起,访问令牌不能与 access_token=### 等查询参数一起使用。 Ref 所以请使用请求的访问令牌 header 而不是查询参数。如下

var res = UrlFetchApp.fetch(url, {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}});