【问题标题】:calling a google cloud function from google app script从谷歌应用脚​​本调用谷歌云功能
【发布时间】:2021-11-20 01:33:00
【问题描述】:

我有一个谷歌云函数,我想在提交谷歌表单时从我的谷歌应用脚​​本调用它。 流程是:1)用户提交google表单,2)会有一个触发器(onformsubmit)运行app脚本函数3)app脚本函数会触发云函数。

到目前为止:

  1. 脚本触发器工作正常,在日志中它正确监听。

  2. 云功能有效,我在云功能测试界面中对其进行了测试,当我从那里运行它时,它会完成我需要它做的事情,即更新谷歌表格以及将数据上传到 BigQuery。

问题来自于从我与我的谷歌表单提交触发器关联的应用脚本中调用该函数。那里似乎没有通信,因为云功能日志未显示触发器提交时发生的任何事情。

这是我的应用脚本代码:

function onSubmit() {

  var url = "myurl"   
  const token = ScriptApp.getIdentityToken() 

  var options = {   
      'method' : 'get',   
      'headers': {"Authorization":"Bearer "+ token}    
        };   
  
  var data = UrlFetchApp.getRequest(url,options);
  
  return data
  
    }

我的 Cloud 函数是 Python 中的 HTTP 函数,开头为:

def numbers(request):

一些故障排除:

  • 当我测试它时,执行日志显示没有错误
  • 如果我尝试将 UrlFetchApp 更改为 .fetch 或将 getIdentityToken 更改为 getOAuthToken 我都收到 401 错误
  • 我在我的 oauthScopes 中添加了以下内容:
     "openid",
     "https://www.googleapis.com/auth/cloud-platform",
     "https://www.googleapis.com/auth/script.container.ui",
     "https://www.googleapis.com/auth/script.external_request",
     "https://www.googleapis.com/auth/documents"```
    
  • 我使用同一个 Google Cloud 帐户运行两者
  • 我也将自己添加到 Cloud Function 设置中的权限

任何关于为什么两者不交流的想法都将不胜感激!

【问题讨论】:

标签: python google-apps-script oauth google-cloud-functions urlfetch


【解决方案1】:

如果有人遇到类似问题,我能够解决此问题。由于我的电子邮件地址与组织帐户相关联,因此我的 Apps 脚本和 GCP 不允许正确的权限。

在 Apps 脚本的设置中,我无法使用该功能更改 GCP 帐户,因为 GCP 不属于我的组织。在我的组织 GCP 上设置云功能后,我可以在设置中手动更改帐户,并且我的功能在触发器上正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2019-05-08
    相关资源
    最近更新 更多