【问题标题】:Can I have part of Google Apps Script code execute as me while the rest executes as the accessing user?我可以让部分 Google Apps 脚本代码以我的身份执行,而其余的以访问用户的身份执行吗?
【发布时间】:2016-01-31 21:24:31
【问题描述】:

我有一个应用程序脚本网络应用程序,它写入一个融合表,以及一些它定期缓存的电子表格。我不想向同事提供对融合表的编辑权限,他们可以随意编辑条目。

目前,Web 应用程序以用户身份执行,适用于我组织内的任何人,这就是我们的意图。但是,我宁愿 Web 应用程序像我自己一样执行任何查询,这样我就不需要显式地向可能正在访问它的每个用户提供权限。

有没有办法做到这一点?

【问题讨论】:

    标签: google-apps-script google-fusion-tables


    【解决方案1】:

    是的,这是可能的。以前,您将使用 OAuth2 库,将您的凭据保存到脚本属性存储,然后使用 REST 接口访问您想要使用自己的凭据访问的服务。现在您可以使用 Execution API 来使用内置服务了。

    设置

    1. 将 OAuth2 库添加到您的项目中:
      https://github.com/gsuitedevs/apps-script-oauth2

    2. 根据 README.md 进行设置,匹配您的项目范围(查看项目属性)。确保将 setPropertyStore() 指向脚本属性。

    3. 验证您的 OAuth2 服务。

    4. 将您的脚本发布为执行 API

    5. 添加对脚本 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;
        }
    
    1. 像你一样执行函数:var results = ExecuteAsMe("searchFusionTable",['searchTerm', 50]);

    参考:

    执行API
    https://developers.google.com/apps-script/guides/rest/api?hl=en

    OAuth2 库

    https://github.com/gsuitedevs/apps-script-oauth2

    【讨论】:

    • 能否将ScriptApp.getProjectKey() 替换为ScriptApp.getScriptId()ScriptApp.getProjectKey() 已弃用。
    • 当您将脚本作为执行 API 发布时,返回的 ID 仍然是项目密钥。这还没有被交换。
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2015-04-15
    相关资源
    最近更新 更多