使用Google Script发送包含Word文档附件的电子邮件

时间:2016-02-10 17:32:54

标签: oauth google-apps-script

我有一个谷歌脚本,它发送一封带有Word文档作为附件的电子邮件。它曾经工作,直到谷歌弃用OAuth 1.0

这是失败的路线:

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

如果删除第二个参数,即函数调用OAuth,它应该有效吗?为什么我需要进行身份验证?它应该能够使用谷歌驱动器中的ID获取文档。它似乎工作(因为我没有看到任何错误),但是,当我收到电子邮件时,有一个损坏的文字doc附件。

所以,我尝试实施OAuth 2.0。但我没有到达任何地方。这是我的代码:

function getDriveService() {
  return OAuth2.createService('drive')

      .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
      .setTokenUrl('https://accounts.google.com/o/oauth2/token')

      .setClientId(CLIENT_ID)
      .setClientSecret(CLIENT_SECRET)

      .setCallbackFunction('authCallback')

      .setPropertyStore(PropertiesService.getUserProperties())

      .setScope('https://www.googleapis.com/auth/drive')
      .setParam('login_hint', Session.getActiveUser().getEmail())
      .setParam('access_type', 'offline');
      //.setParam('approval_prompt', 'force');
}

function authCallback(request) {
  var driveService = getDriveService();
  var isAuthorized = driveService.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('Success! You can close this tab.');
  } else {
    return HtmlService.createHtmlOutput('Denied. You can close this tab');
  }
}

var oauth2Service = getDriveService();
var token = oauth2Service.getAccessToken();
var parameters = { method : 'get',
                    headers : {'Authorization': 'Bearer '+ token}};

var options =
    {
      "method" : "get"
    };    

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

我收到一般错误[访问未授予或已过期]。我想要的是能够发送一封电子邮件,其附件是我的Google云端硬盘中存储的文档(格式doc或docx)。似乎不可能!我可以将此文档作为pdf附加,但不是Microsoft文档。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:-1)

https://github.com/googlesamples/apps-script-oauth2 - 查看设置

...

您是否在库中添加了OAuth 2.0?

资源 - >图书馆 - >然后添加'MswhXl8fVhTFUH_Q3UOJbXvxhMjh3Sh48'