我的程序将电子表格转换为Excel文件。但它只适用于一个用户

我的程序将电子表格转换为Excel文件。但它只适用于一个用户,excel,oauth,google-apps-script,google-docs-api,google-account,Excel,Oauth,Google Apps Script,Google Docs Api,Google Account,我制作了一个更大的(1000多行代码)应用程序脚本。对我来说,这很有效。没有其他用户可以运行它。我希望他们也能运行它,但我不明白他们为什么不能 此部件上出现问题: var id = 'A_correct_ID_of_a_Google_Spreadsheet'; var SSurl = 'https://docs.google.com/feeds/'; var doc = UrlFetchApp.fetch(SSurl+'download/spreadsheets/Export?key='+id+

我制作了一个更大的(1000多行代码)应用程序脚本。对我来说,这很有效。没有其他用户可以运行它。我希望他们也能运行它,但我不明白他们为什么不能

此部件上出现问题:

var id = 'A_correct_ID_of_a_Google_Spreadsheet';
var SSurl = 'https://docs.google.com/feeds/';
var doc = UrlFetchApp.fetch(SSurl+'download/spreadsheets/Export?key='+id+'&exportFormat=xls',googleOAuth_('docs',SSurl)).getBlob();
var spreadsheet = DocsList.createFile(doc);
功能(和结构)发布于此处:

我看不出为什么这个程序只为一个用户运行。所有文件在所有用户之间共享,所有权已交换。

当脚本使用oAuth(在您的情况下是googleOAuth(名称、范围))时,它需要从脚本编辑器获得授权,独立于用户通过“正常”常规过程获得的其他授权。 这已经是一个相当长的时间的目标,并没有有效的解决办法,据我所知


因此,根据脚本的部署方式(在SS或Doc中或作为webApp),您可能会找到解决方案,也可能不会。。。如果,正如你文章第一条评论中所建议的,你从一个webapp上运行它,你可以部署它以自己的身份运行,并允许匿名访问,它将很容易工作,但在任何其他情况下,您的其他用户都必须打开脚本编辑器并运行触发oAuth授权过程的功能。

您是否尝试过将应用程序部署为“任何人,甚至匿名”或“需要登录”而不是“仅限我”?此oAuth 1内置支持不适用于web应用程序。您的用户需要从电子表格(如菜单或按钮)运行它,否则您必须在脚本中开发对oauth 2的支持(它不是内置的)。这里已经有一些代码示例。这个脚本从一个菜单按钮的Speadsheet(Google表单应答表)运行。当我运行这个脚本(在ScipEdit或电子表格中)时,它将一直工作到以下行:var doc=UrlFet…Blob();没有错误,即使周围有一个try{…}catch(e){…}。说实话,我没有看到getBlob(),urlfetch返回的数据已经是一个blob,因此确实不需要它。很抱歉一开始没有告诉你。
function googleOAuth_(name,scope) {  
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oAuthConfig.setConsumerKey('anonymous');
  oAuthConfig.setConsumerSecret('anonymous');
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}