自动OAuth2令牌无效 - Google Apps脚本

时间:2015-06-11 13:14:50

标签: oauth google-apps-script google-drive-api

我正在尝试在文档中运行谷歌应用程序脚本,该脚本会自动发送带有附加谷歌电子表格的电子邮件作为.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()函数时,它会告诉我:“访问权限未授予或已过期”

所以我想知道我错过了哪一步。

你对发生的事情有任何线索吗?

非常感谢帮助, 感谢

1 个答案:

答案 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 })
}