VZ.*_*VZ. 15 google-apps-script google-forms
我正在尝试开始使用一个非常简单的Google表单,其中只包含几个问题(只有2个选项和一个简短文本的多项选择).创建它之后,我打开了脚本编辑器并输入了
function onSubmit(e) {
Logger.log("onSubmit(%s)", JSON.stringify(e));
}
Run Code Online (Sandbox Code Playgroud)
并onSubmit使用"编辑"菜单中的"当前项目的触发器"将其配置为"表单提交"触发器的处理程序.
填写表单并立即提交它会导致处理程序被调用,但我只在日志中看到:
[17-04-15 18:56:23:584 CEST] onSubmit({"response":{},"source":{},"authMode":{},"triggerUid":1870249629})
Run Code Online (Sandbox Code Playgroud)
即响应字段为空.我也尝试过使用FormApp.getActiveForm().getResponses(),但它也会返回一个包含几个空对象的数组(OTOH,FormApp.getActiveForm().getTitle()会返回我给表单的标题).
我怀疑我需要给脚本一些额外的权限来访问表单数据,但是我不知道怎么做,即使这确实是问题.
有谁知道为什么我没有得到表格价值,我该怎么做才能得到它们?提前致谢!
Tan*_*ike 24
有两种模式可用于检索提交的值.对于这两种模式,必须将用于从表单提交中检索值的功能作为触发器安装.可安装触发器的详细信息是https://developers.google.com/apps-script/guides/triggers/installable.
在这种情况下,通过安装触发器,您可以通过脚本检索提交的值.事件对象的详细信息是https://developers.google.com/apps-script/guides/triggers/events#form-submit.
脚本:
function onSubmit(e){
Logger.log("%s", JSON.stringify(e));
}
Run Code Online (Sandbox Code Playgroud)
结果:
{
"values": [
"date and time",
"test"
],
"namedValues": {
"fromtestform": [
"test"
],
"timeStamp": [
"date and time"
]
},
"range": {
"columnStart": 1,
"rowStart": 2,
"rowEnd": 2,
"columnEnd": 2
},
"source": {},
"authMode": {},
"triggerUid": #####
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可以通过以下脚本检索提交的值.详细信息请访问https://developers.google.com/apps-script/reference/forms/form-response.
脚本:
function onSubmit(e){
Logger.log("authMode=%s, source.getId()=%s", e.authMode, e.source.getId());
var items = e.response.getItemResponses();
for (i in items){
Logger.log("getItem().getTitle()=%s, getResponse()=%s", items[i].getItem().getTitle(), items[i].getResponse());
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
authMode=FULL, source.getId()=### form ID ###
getItem().getTitle()=## item's title ##, getResponse()=test
Run Code Online (Sandbox Code Playgroud)
如果我误解你的问题,我很抱歉.
| 归档时间: |
|
| 查看次数: |
15390 次 |
| 最近记录: |