【发布时间】:2021-11-20 01:33:00
【问题描述】:
我有一个谷歌云函数,我想在提交谷歌表单时从我的谷歌应用脚本调用它。 流程是:1)用户提交google表单,2)会有一个触发器(onformsubmit)运行app脚本函数3)app脚本函数会触发云函数。
到目前为止:
-
脚本触发器工作正常,在日志中它正确监听。
-
云功能有效,我在云功能测试界面中对其进行了测试,当我从那里运行它时,它会完成我需要它做的事情,即更新谷歌表格以及将数据上传到 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