我正在创建一个google表单来捕获来自多个用户的数据。此表单有13个字段。其中3个表单字段是下拉列表,用于填充工作表中的数据。这部分代码已完成。但我被下面的场景打动了。
其中一个字段捕获实例详细信息(生产、UAT)并具有复选框选项。我原以为当实例字段在两个复选框上选择时,我可以在响应表中创建两行,但我了解到这不是谷歌表单的工作方式。因此,我正在寻找一个脚本选项来执行以下操作。
我在谷歌应用脚本或Java方面的经验非常有限。以我有限的知识,我能够从表单中获得响应,但不确定如何在满足条件时创建额外的行(如上所述)。一步一步了解表单架构
代码1:这是为了获取表单中字段的标题、索引和类型。所以我知道一些表格信息(仍在学习)
function testgetFormDetails()
{
var form = FormApp.getActiveForm();
var items = form.getItems();
for (var i in items)
{
Logger.log(items[i].getTitle() +', ID - '+
items[i].getId() +', Type - ' +
items[i].getType() +' , Form Index - '+
items[i].getIndex());
}
}
下面是执行html" target="_blank">日志
**Execution log**
5:49:38 PM Notice Execution started
5:49:39 PM Info Business Group, ID - 286404828, Type - CHECKBOX , Form Index - 0
5:49:39 PM Info Instance, ID - 1043278952, Type - CHECKBOX , Form Index - 1
5:49:40 PM Notice Execution completed
代码2:获得问题的回答(小进展)
function getResponseForInstance()
{
var formResponses = FormApp.getActiveForm().getResponses();
Logger.log(formResponses.length);
for (var i = 0; i < formResponses.length; i++)
{
var formResponse = formResponses[i];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++)
{
var itemResponse = itemResponses[j];
var lookfor = 'UAT,PRD'
if(itemResponse.getResponse() == lookfor )
{
Logger.log('Question:' + itemResponse.getItem().getTitle() + ' Response:' + itemResponse.getResponse() )
}
}
}
}
执行日志显示了行号、问题和响应
**Execution log**
8:22:18 PM Info Question:Instance Response:UAT,PRD
8:22:18 PM Info Question:Instance Response:UAT,PRD
现在我不得不将两者结合起来,在响应电子表格中创建一个额外的行,并为此绞尽脑汁。我只知道atm是**记录器。Log()**
行将被附加代码替换,以在满足条件时添加2行。
在此方面的任何帮助都将不胜感激。
期待您的支持和指导。
根据@Jose Vasquez示例表单添加示例屏幕截图
预期响应-第二行被分成两行,C2中的列数据被解析为每行的PRD和UAT,第二行和第三行的数据提醒保持不变
谢谢艾尔
以下是我的方法(没有触发器,只运行和处理所有当前响应):
function processResponses() {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName("SHEET_NAME");
const formResponses = FormApp.getActiveForm().getResponses();
for (var i = 0; i < formResponses.length; i++) {
var formResponse = formResponses[i];
var itemResponses = formResponse.getItemResponses();
// Add responses comma-separated included
var rowData = itemResponses.map(item => item.getResponse().toString());
rowData.splice(0, 0, formResponse.getTimestamp()); // Timestamp
// Split into different rows afterwards
if (rowData[2].includes(',')) {
rowData[2].split(',').forEach(instanceName => {
let tmpRow = rowData.map(data => data);
tmpRow[2] = instanceName;
sheet.appendRow(tmpRow); // Append to the sheet
});
} else {
sheet.appendRow(rowData); // Append to the sheet
}
}
}
首先,打开电子表格,您将在其中存储您的回答。完成此操作后,像已经做的那样迭代您的响应,然后添加所有响应,包括每个表单响应的时间戳。
将响应数据添加到rowData中后,可以计算实例列(第2列或第C列)是否包含逗号。如果是这样,只需按此字符拆分此字段,然后遍历此数据,以便为每个“实例”在工作表中追加新行。
从事件对象检索响应。
function onFormSubmit(e) {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName("SHEET_NAME");
// Form Response retrieved from the event object
const formResponse = e.response;
var itemResponses = formResponse.getItemResponses();
// Add responses comma-separated included
var rowData = itemResponses.map(item => item.getResponse().toString());
rowData.splice(0, 0, formResponse.getTimestamp());
// Split into different rows afterwards
if (rowData[2].includes(',')) {
rowData[2].split(',').forEach(instanceName => {
let tmpRow = rowData.map(data => data);
tmpRow[2] = instanceName;
sheet.appendRow(tmpRow); // Append to the sheet
});
} else {
sheet.appendRow(rowData); // Append to the sheet
}
}
我想让我的谷歌表单根据问题回答将数据放入不同的谷歌表单(而不是不同的标签)。 例如,如果有人为汽车制造商选择“Honda”,我希望将所有表单数据转储到表A中。如果有人选择“Toyota”,我希望将所有表单数据转储到表B中,依此类推。虽然这些是单独的图纸,但图纸的选项卡名称与制造商匹配。 我熟悉谷歌应用脚本,但不是行业专家或开发者。任何帮助将不胜感激,谢谢!
问题内容: 我在单个表中创建两个标识列时遇到问题。这是我工作的一部分…他们不惜任何代价在一个表中需要两个标识列。有什么办法可以做到这一点。 请提供任何语法来一次或以后在单个表中创建两个标识列。 在此先感谢,Shashra 问题答案: 在SQL Server中,您可以具有一个计算列,该列仅与标识(或任何其他)列具有相同的值:
问题内容: 我们正在通过Python API使用Google BigQuery 。如何根据查询结果创建表(新表或覆盖旧表)?我查看了查询文档,但没有发现有用。 我们要模拟: ANSI SQL中的“ SELEC … INTO …”。 问题答案: 您可以通过在查询中指定目标表来执行此操作。您将需要使用API而不是调用,并且应该指定并填写目标表。 如果您使用的是原始API,则配置如下所示。如果您使用的是
我正在尝试使用web API创建常见问题解答解决方案。我正在从数据库中获取问题和答案。我只希望在单击实际问题时显示问题和答案。 我现在得到的只是每一个问题和答案。 这是我从数据库中获取问题的功能: 它们出现在这个分区中: 这就是我试图实现的,我想做这样的东西,只显示问题,当问题扩展时显示答案?任何人都知道如何在没有新视角的情况下寻找答案 这是我现在的索引 数据库表 更新: 现在我有了这个视图,有没
问题内容: 我在使用RODBC的sqlSave创建表时遇到了麻烦(或更准确地说,是将数据写入到创建的表中)。 这与现有的sqlSave问题/答案不同,因为 他们遇到的问题是不同的,我可以创建表,而他们不能, 我已经不成功地合并了他们的解决方案,例如在运行sqlSave之前关闭并重新打开连接, 错误消息是不同的,唯一的例外是帖子在以上两种方式中是不同的 我在Windows RDP上使用MS SQL
null 我还尝试在表创建后使用sqlUpdate()。不管我是在R中还是在SQL Server Management Studio中创建它,我都会得到错误 最后,请注意,在没有append=TRUE的情况下,在创建新表时,以及在使用和不使用rownames选项的情况下,我也尝试了这种方法。 Freenode的#r的Flick先生让我检查是否可以使用sqlQuery读取空表,事实上,我可以。 我创