Google apps script 我可以让谷歌应用程序脚本代码的一部分以我的身份执行,而其余部分以访问用户的身份执行吗?

Google apps script 我可以让谷歌应用程序脚本代码的一部分以我的身份执行,而其余部分以访问用户的身份执行吗?,google-apps-script,google-fusion-tables,Google Apps Script,Google Fusion Tables,我有一个应用程序脚本web应用程序,可以写入fusion表,还有一些电子表格可以定期缓存。我不想向同事提供对fusion表的编辑访问,他们可以根据自己的需要编辑条目 目前,web应用程序以用户身份执行,这是我组织内的任何人的意图。但是,我更希望web应用程序像我自己一样执行任何查询,这样我就不需要显式地向可能访问它的每个用户提供权限 有办法做到这一点吗?是的,这是可能的。以前,您将使用OAuth2库,将凭据保存到脚本属性存储,然后使用REST接口访问您希望使用自己的凭据访问的服务。现在,您可以使

我有一个应用程序脚本web应用程序,可以写入fusion表,还有一些电子表格可以定期缓存。我不想向同事提供对fusion表的编辑访问,他们可以根据自己的需要编辑条目

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


有办法做到这一点吗?

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

##设置

  • 将OAuth2库添加到项目中:

  • 根据README.md设置它,与项目的范围相匹配(查看项目属性)。确保将setPropertyStore()点设置为脚本属性

  • 验证您的OAuth2服务

  • 将脚本发布为执行API

  • 添加对脚本REST接口的调用。查看token方法,确保将其更改为与您自己的方法相匹配

    函数ExecuteAsMe(函数名,参数数组){ var url='1〕https://script.googleapis.com/v1/scripts/“+ScriptApp.getProjectKey()+”:运行“

    var payload=JSON.stringify({“function”:functionName,“parameters”:paramsArray,“devMode”:true})

    var params={method:“POST”, 标头:{授权:“承载者”+getFusionService().getAccessToken()}, 有效载荷:有效载荷, contentType:“应用程序/json”, muteHttpExceptions:true}; var results=UrlFetchApp.fetch(url,参数); 返回JSON.parse(results.response.result); }

  • 按照您的方式执行该函数:
    var results=ExecuteAsMe(“searchfusionable”,['searchTerm',50])

  • 参考资料:
    执行API

    OAuth2库

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

    ##设置

  • 将OAuth2库添加到项目中:

  • 根据README.md设置它,与项目的范围相匹配(查看项目属性)。确保将setPropertyStore()点设置为脚本属性

  • 验证您的OAuth2服务

  • 将脚本发布为执行API

  • 添加对脚本REST接口的调用。查看token方法,确保将其更改为与您自己的方法相匹配

    函数ExecuteAsMe(函数名,参数数组){ var url='1〕https://script.googleapis.com/v1/scripts/“+ScriptApp.getProjectKey()+”:运行“

    var payload=JSON.stringify({“function”:functionName,“parameters”:paramsArray,“devMode”:true})

    var params={method:“POST”, 标头:{授权:“承载者”+getFusionService().getAccessToken()}, 有效载荷:有效载荷, contentType:“应用程序/json”, muteHttpExceptions:true}; var results=UrlFetchApp.fetch(url,参数); 返回JSON.parse(results.response.result); }

  • 按照您的方式执行该函数:
    var results=ExecuteAsMe(“searchfusionable”,['searchTerm',50])

  • 参考资料:
    执行API

    OAuth2库

    请将
    ScriptApp.getProjectKey()
    替换为
    ScriptApp.getScriptId()
    ScriptApp.getProjectKey()
    已弃用。当您将脚本发布为执行API时,返回的ID仍然是项目密钥。尚未将其交换。请将
    ScriptApp.getProjectKey()
    替换为
    ScriptApp.getScriptId()
    ScriptApp.getProjectKey()
    已弃用。当您将脚本发布为执行API时,返回的ID仍然是项目密钥。这还没有被交换。