从 google 应用脚本调用 google 云函数
calling a google cloud function from google app script
我有一个 Google 云函数,我想从我的 Google 应用程序脚本中调用 Google 表单提交。
该过程将是:1) 用户提交 google 表单,2) 将有一个触发器 (onformsubmit) 将 运行 应用脚本函数 3) 应用脚本函数将触发云函数。
到目前为止:
脚本触发器有效,在日志中它正在正确侦听。
云功能有效,我在云功能测试界面对其进行了测试,当我从那里运行它时,它完成了我需要它做的事情,即更新 google sheet 以及将数据上传到 BigQuery。
问题来自从我与 google 表单提交触发器相关联的 App 脚本调用该函数。那里似乎没有通信,因为云函数日志没有显示触发器提交时发生的任何事情。
这是我的应用脚本代码:
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 云帐户
- 我也在云功能设置中添加了自己的权限
任何关于为什么两者不沟通的想法都将不胜感激!
如果有人遇到类似问题,我可以解决这个问题。由于我的电子邮件地址与组织帐户相关联,因此我的 Apps 脚本和 GCP 不允许正确的权限。
在 Apps 脚本的设置中,我无法使用该功能更改 GCP 帐户,因为 GCP 在我的组织之外。在我的组织 GCP 上设置 Cloud Function 后,我可以在设置中手动更改帐户,并且我的函数在触发器上正常工作。
我有一个 Google 云函数,我想从我的 Google 应用程序脚本中调用 Google 表单提交。 该过程将是:1) 用户提交 google 表单,2) 将有一个触发器 (onformsubmit) 将 运行 应用脚本函数 3) 应用脚本函数将触发云函数。
到目前为止:
脚本触发器有效,在日志中它正在正确侦听。
云功能有效,我在云功能测试界面对其进行了测试,当我从那里运行它时,它完成了我需要它做的事情,即更新 google sheet 以及将数据上传到 BigQuery。
问题来自从我与 google 表单提交触发器相关联的 App 脚本调用该函数。那里似乎没有通信,因为云函数日志没有显示触发器提交时发生的任何事情。
这是我的应用脚本代码:
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 云帐户
- 我也在云功能设置中添加了自己的权限
任何关于为什么两者不沟通的想法都将不胜感激!
如果有人遇到类似问题,我可以解决这个问题。由于我的电子邮件地址与组织帐户相关联,因此我的 Apps 脚本和 GCP 不允许正确的权限。
在 Apps 脚本的设置中,我无法使用该功能更改 GCP 帐户,因为 GCP 在我的组织之外。在我的组织 GCP 上设置 Cloud Function 后,我可以在设置中手动更改帐户,并且我的函数在触发器上正常工作。