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

我做了一个更大的(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); 

函数(和结构)在这里发布: 其他线程

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

我看不到为什么程序只能运行一个用户的任何理由。 所有的文件都在所有用户之间共享,所有权已经交换。

当脚本使用oAuth(googleOAuth_(名称,作用域))时,它需要从脚本编辑器授权,与用户使用“正常”常规过程授予的其他授权无关。 这已成为相当长时间的改进请求的对象,据我所知没有有效的解决方法。

所以,取决于你的脚本是如何部署的(在一个SS或一个文档或web应用程序),你可能会find一个解决scheme或不…如果,如您的post的第一个评论中所build议,你运行从一个Web应用程序,你可以部署它作为你自己运行,并允许匿名访问,它会很容易,但在其他情况下,其他用户将不得不打开脚本编辑器,并运行一个触发oAuth授权过程的函数。