新的OAuth2需要运行脚本

时间:2015-06-01 10:16:13

标签: email google-apps-script google-sheets google-oauth2

我一直在使用此脚本在修改后将google-spreadsheet发送到我的电子邮件。任何人都可以帮助用OAuth2 for Apps Script替换身份验证部分。 OAuth 1.0支持在2012年已弃用,计划于2015年4月20日关闭。

感谢。

function onOpen() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var menuEntries = [ {name: "Send Email", functionName: "sendEmail"}];
   ss.addMenu("Scripts", menuEntries);
 };


function sendEmail() {

  var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();

  var sheetName = SpreadsheetApp.getActiveSpreadsheet().getName();

  //var email = Session.getUser().getEmail();
   var email = Session.getEffectiveUser();

  var subject = "this is my subject";

  var body = "this is my body :)";



  var oauthConfig = UrlFetchApp.addOAuthService("google");

  oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");

  oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope=https://spreadsheets.google.com/feeds/");

  oauthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");

  oauthConfig.setConsumerKey("anonymous");

  oauthConfig.setConsumerSecret("anonymous");



  var requestData = {"method": "GET", "oAuthServiceName": "google", "oAuthUseToken": "always"};




  var url = "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key="

      + ssID + "&gid=0&portrait=true" +"&exportFormat=xls";



  var result = UrlFetchApp.fetch(url , requestData);  

  var contents = result.getContent();

  MailApp.sendEmail(email,subject ,body, {attachments:[{fileName:sheetName+".xls", content:contents, mimeType:"application//xls"}]});

};

1 个答案:

答案 0 :(得分:0)

这是一个简单的解决方法。获取请求需要允许驱动器访问的范围。您可以通过调用DriveApp强制Apps脚本添加此范围。然后在您的提取中,将用户OAuth令牌添加到呼叫的标头中。

function onlyToAddTheDriveScope(){
  DriveApp.getRootFolder()
}

function onOpen() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var menuEntries = [ {name: "Send Email", functionName: "sendEmail"}];
   ss.addMenu("Scripts", menuEntries);
 };


function sendEmail() {

  var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();

  var sheetName = SpreadsheetApp.getActiveSpreadsheet().getName();

  //var email = Session.getUser().getEmail();
   var email = Session.getEffectiveUser();

  var subject = "this is my subject";

  var body = "this is my body :)";

  var requestData = {"method": "GET",
                     "headers":{"Authorization":"Bearer "+ScriptApp.getOAuthToken()}
                               };




  var url = "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key="

      + ssID + "&gid=0&portrait=true" +"&exportFormat=xls";



  var result = UrlFetchApp.fetch(url , requestData);  

  var contents = result.getContent();

  MailApp.sendEmail(email,subject ,body, {attachments:[{fileName:sheetName+".xls", content:contents, mimeType:"application//xls"}]});

};