我正在尝试在文档中运行谷歌应用程序脚本,该脚本会自动发送带有附加谷歌电子表格的电子邮件作为.xlsx文件,每隔几个小时运行一次。
如果我使用来自google OAuth2游乐场的手动OAuth2代码,以下是有效的解决方案:
$(document).on("mouseenter mouseleave","[class^=catThumb]",function(){
$("[class^=catFoot]").eq($(this).index()).slideToggle();
});
为了尝试自动生成授权令牌,我完全遵循了以下所有步骤:
https://github.com/googlesamples/apps-script-oauth2
更改脚本: .setClientId( '...') .setClientSecret( '...') 我还在URI中将google开发者控制台的https://script.google.com/macros/d/myprojectkey/usercallback中的项目ID放入
但是当我运行makeRequest()函数时,它会告诉我:“访问权限未授予或已过期”
所以我想知道我错过了哪一步。
你对发生的事情有任何线索吗?
非常感谢帮助, 感谢
答案 0 :(得分:1)
您需要执行第2步:将用户定向到授权网址
当侧栏加载时,您将单击该链接并打开Oauth对话框。允许访问后,您可以使用getAccessToken()方法。
编辑: 对于您的特定情况,您不需要单独的OAuth流程。您可以使用Apps脚本获取导出所需的令牌。由于您已经请求访问驱动器,因此您的令牌将适用于导出呼叫。
function downloadXLS() {
var file = Drive.Files.get('xxxx');
var response = UrlFetchApp.fetch('https://docs.google.com/spreadsheets/d/xxx/export?format=xlsx',{headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}});
var doc = response.getBlob();
app = DriveApp.createFile(doc).setName(file.title + '.xls')
MailApp.sendEmail("xxx@xxx.com", "oh man", " Body", { attachments: app })
}