我正在尝试创建一个谷歌工作表,可以读取和存储来自谷歌表单的信息。我需要这个程序来采取的时候,表单提交和附加到我的谷歌工作表的领域。下面的代码自动创建一个保存表单信息的工作表。
我目前正在使用logger来查看他们是否正在从表单中获取任何信息。他们不是。
如何从表单中检索每个值,然后以编程方式将其追加到我创建的工作表中?
function formSubmit(e)
{
// Function level variables
var date = e.values[0];
var name = e.values[1];
var phone = e.values[2];
// Get the spread sheet that contains the data
var ss = SpreadsheetApp.openById('1FpRbYC-
nfltxoalGV974aDX6A_fEy_MBYBShruRRYfM');
var sheet = ss.getSheetId(0);
if(sheet)
{
Logger.log(name);
}
else
{
Logger.log(phone)
}
// Add submission to DB
sheet.appendRow([date,name,phone]);发布于 2017-10-02 07:15:09
这个答案怎么样?
修改和确认点:
var sheet = ss.getSheetId(0);.提交表单时,由于该错误,if (sheet) {下面的脚本不会运行。getSheetId()的详细信息是here。如果您要将数据导入到电子表格的第一页,请使用var sheet = ss.getSheets()[0];.formSubmit(e)是否为installed as a trigger as From Spreadsheet和On form submit。通过安装触发器,您可以通过脚本检索提交的值。您可以在here.上查看详细信息
修改后的脚本:
在您的例子中,如果您想使用e.values检索复选框的值,当问题只出现在一个复选框中时,您可以使用e.values[1].split(", ")来实现。当有几个问题时,您可以使用e.namedValues["### question name ###"]检索每个值。
在这里,从您的脚本中,它假定是前者。
function formSubmit(e) {
var values = e.values[1].split(", ");
var date = values[0];
var name = values[1];
var phone = values[2];
var ss = SpreadsheetApp.openById('1FpRbYC-nfltxoalGV974aDX6A_fEy_MBYBShruRRYfM');
var sheet = ss.getSheets()[0];
if (sheet) {
Logger.log(name);
} else {
Logger.log(phone);
}
sheet.appendRow([date,name,phone]);
}如果我误解了你的问题,我很抱歉。
发布于 2017-10-02 07:16:49
是来自表单或电子表格的事件触发器。如果它来自电子表格,那么这些是事件对象传递的参数: authmode、values、range和namedValues。如果它来自表单,那么这些参数是: authmode、response和source。
https://stackoverflow.com/questions/46516948
复制相似问题