我是新手,所以请原谅我这是一个愚蠢的问题。
我正在使用谷歌脚本根据谷歌表格中提交的答案进行更改。 我有一个测试功能,我一直在脚本编辑器中使用它,它完美地工作。 但是,当使用onFormSubmit触发器时,从e.values获取变量结果时,它没有做任何事情。我已经定义了项目的触发器,并且可以在“当前项目的触发器”窗口中看到它已经确认,所以它不能是那样。
这是测试功能代码:
function Test_form_submit() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName("Group Totals")
SpreadsheetApp.flush()
var their_choice1 = "Group 5: Thursday 6-8pm"
var r = find_limits("C3:E7", their_choice1)
var count = r[0]
var limit = r[1]
check_availability("545507554", count, limit, their_choice1)
}
这是我的触发功能代码:
function onFormSubmit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName("Group Totals")
SpreadsheetApp.flush()
var their_choice1 = e.values[3]
var r = find_limits("C3:E7", their_choice1)
var count = r[0]
var limit = r[1]
check_availability("545507554", count, limit, their_choice1)
}
我想要的选择是在电子表格的D栏中,所以我相信e.values [3]是正确的选择。 我无法理解为什么没有发生任何事情。
我尝试添加一行logger.log(e.values [3]),但是当我查看时,日志是空白的。
非常感谢任何帮助!
答案 0 :(得分:1)
您可以使用e.namedValues获取任何特定列的提交值。
e.namedValues["FULL COLUMN NAME"].toString();
答案 1 :(得分:1)
作为Amit的答案的补充,您可以使用如下语句检查onFormSubmit触发器附带的eventInfo
中返回的所有值和参数:
Logger.log(e);
这将显示如下内容:
(此处显示的值来自我使用的未使用的表单"垃圾"值;-)但实际上看到结构就足够了。)
答案 2 :(得分:0)
对于尝试使用上述相同方法但没有运气的任何人,我发现此链接https://code.google.com/p/google-apps-script-issues/issues/detail?id=5325。总结一下:
function runonformsubmit(e){
var itemResponses = e.response.getItemResponses();
var item1 = itemResponses[0].getResponse();
//OR to get the title of the question
var title1 = itemResponses[0].getItem().getTitle();
}
我已成功使用此模型来提取回复。以下是我目前使用的代码示例:
function createClientDefaultURLs(e){
var clientResponses = e.response.getItemResponses();
var clientFName = clientResponses[0].getResponse();
var clientLName = clientResponses[1].getResponse();
var companyName = clientResponses[2].getResponse();
var companyAddress = clientResponses[3].getResponse();
var clientEmail = clientResponses[4].getResponse();
}
希望能帮助其他人弄清楚如何从表单提交中提取回复。