使用谷歌脚本通过电子邮件发送 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()}});
我只是使用 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()}});