我有一个谷歌脚本,它发送一封带有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文档。
任何帮助将不胜感激!
答案 0 :(得分:-1)
https://github.com/googlesamples/apps-script-oauth2 - 查看设置
...
您是否在库中添加了OAuth 2.0?
资源 - >图书馆 - >然后添加'MswhXl8fVhTFUH_Q3UOJbXvxhMjh3Sh48'