我有一个应用程序脚本 Web 应用程序,可以写入融合表,以及定期缓存的一些电子表格。我不想向同事提供对融合表的编辑访问权限,他们可以根据自己的需要编辑条目。
目前,Web 应用程序以用户身份执行,适用于我组织内的任何人,这就是目的。但是,我希望 Web 应用程序像我自己一样执行任何查询,这样我就不需要向可能访问它的每个用户显式提供权限。
有没有办法做到这一点?
是的,这是可能的。以前,您将使用 OAuth2 库,将凭据保存到脚本属性存储,然后使用 REST 接口访问您想要使用自己的凭据访问的服务。现在您可以使用执行 API 来使用内置服务。
Setup
-
将 OAuth2 库添加到您的项目中:
https://github.com/gsuitedevs/apps-script-oauth2 https://github.com/gsuitedevs/apps-script-oauth2
-
根据 README.md 进行设置,与您的项目范围相匹配(查看项目属性)。确保将 setPropertyStore() 指向脚本属性。
-
验证您的 OAuth2 服务。
-
将您的脚本发布为执行 API
-
添加对脚本 REST 接口的调用。查看令牌方法,确保更改它以匹配您自己的方法。
function ExecuteAsMe(functionName,paramsArray){
var url = 'https://script.googleapis.com/v1/scripts/'+ScriptApp.getProjectKey()+':run';
var payload = JSON.stringify({"function": functionName ,"parameters":paramsArray, "devMode": true});
var params={method:"POST",
headers:{Authorization: "Bearer "+ getFusionService().getAccessToken()},
payload:payload,
contentType:"application/json",
muteHttpExceptions:true};
var results = UrlFetchApp.fetch(url, params);
return JSON.parse(results).response.result;
}
- 按照以下方式执行该函数:
var results = ExecuteAsMe("searchFusionTable",['searchTerm', 50]);
参考:
执行API
https://developers.google.com/apps-script/guides/rest/api?hl=en https://developers.google.com/apps-script/guides/rest/api?hl=en
OAuth2 库
https://github.com/gsuitedevs/apps-script-oauth2 https://github.com/gsuitedevs/apps-script-oauth2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)