公共文档的Google Apps脚本批准

时间:2013-08-29 18:20:14

标签: google-apps-script authorization google-sheets email-attachments

我有一个谷歌电子表格,与我们域名中的所有成员共享。我希望有一个脚本,只要其中一个用户运行脚本,它就会将电子表格作为电子邮件附件发送。

this question为指导,我得到了以下代码:

function sendEmail() {

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

  var sheetName = SpreadsheetApp.getActiveSpreadsheet().getName();
  //var email = Session.getUser().getEmail();
  var email = "xxxxx@example.com";
  var subject = "Order Form";
  var body = "Please find the attached Order Form for drop-ship delivery.";

  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"}]}); 

}

此代码有效,但前提是我首先从脚本编辑器运行代码(包括授权访问google邮件帐户),然后在使用脚本时授权脚本。

因此,我将文档传递给订单部门,并且只有在EACH USER从脚本编辑器中授权脚本时才能使用它,然后在使用时授权脚本。

有没有办法消除“通过脚本编辑器授权”?我真的不想进入每个用户帐户来为他们授权这个脚本(以及必须记住为创建的任何新用户做同样的事情)?

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

不幸的是没有。另请参阅我的question以及谷歌开发者倡导者之一的答案。

您可以投票支持我打开的issue以寻求解决方案。