获取 Google 表单中所有部分的列表或从每个响应中获取 属性?
Get list of all Sections in Google Form or get that property from each response?
TL;DR:如何获取每个回复所属的章节标题?
上下文:我的朋友每周都会向他们的客户发送一份 Google 表格。
它基本上是一个食物菜单,客户必须从中选择才能下订单,我为它做了一个解析器。
问题是菜单中的食物选项在一周中的每一天都是相同的,因此我将 Google 表格分成每一天的部分。要在 Google 工作表中使用响应,我将把它们解析为 table,看起来像这样:
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
我的问题是,在查看 Google's Documentation 之后,我无法找到 returns 每个响应所属的部分名称的方法。
就我而言,将表格分成几个部分是最好的主意吗?如果是这样,我该如何实现我的目标?
确实,在文档中,我也没有找到机会通过 itemId 或 itemIndex 获取该部分的标题。
我不得不自己编写代码。我在 this form 上检查过它 - 它运行良好。
注意。 closestLeft - 找到最近的较低索引。
试试这个:
function myFunction() {
var form = FormApp.getActiveForm();
var items = form.getItems();
var sectionIdxs = [];
for (var i = 0; i < items.length;i++){
var item = items[i];
var itemType = item.getType();
var itemIdx = item.getIndex();
if (itemType == "PAGE_BREAK") {
sectionIdxs.push(itemIdx);
}
var closestLeft = Math.max(...sectionIdxs.filter(v => v < itemIdx));
if (closestLeft == "-Infinity"){
var section = 1;
} else {
section = closestLeft;
}
if (itemType != "PAGE_BREAK"){
var sec = sectionIdxs.indexOf(section) + 2;
// Shows the name of the section
Logger.log("typeItem" + i + ": " + itemType + ", itemTitle: " + item.getTitle() + ", itemId: " + item.getId() + ", itemIdx: " + itemIdx + ", Section: " + sec);
}
}
}
TL;DR:如何获取每个回复所属的章节标题?
上下文:我的朋友每周都会向他们的客户发送一份 Google 表格。 它基本上是一个食物菜单,客户必须从中选择才能下订单,我为它做了一个解析器。
问题是菜单中的食物选项在一周中的每一天都是相同的,因此我将 Google 表格分成每一天的部分。要在 Google 工作表中使用响应,我将把它们解析为 table,看起来像这样:
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
USERNAME | DAY OF THE WEEK | QUESTION | RESPONSE
我的问题是,在查看 Google's Documentation 之后,我无法找到 returns 每个响应所属的部分名称的方法。 就我而言,将表格分成几个部分是最好的主意吗?如果是这样,我该如何实现我的目标?
确实,在文档中,我也没有找到机会通过 itemId 或 itemIndex 获取该部分的标题。 我不得不自己编写代码。我在 this form 上检查过它 - 它运行良好。
注意。 closestLeft - 找到最近的较低索引。
试试这个:
function myFunction() {
var form = FormApp.getActiveForm();
var items = form.getItems();
var sectionIdxs = [];
for (var i = 0; i < items.length;i++){
var item = items[i];
var itemType = item.getType();
var itemIdx = item.getIndex();
if (itemType == "PAGE_BREAK") {
sectionIdxs.push(itemIdx);
}
var closestLeft = Math.max(...sectionIdxs.filter(v => v < itemIdx));
if (closestLeft == "-Infinity"){
var section = 1;
} else {
section = closestLeft;
}
if (itemType != "PAGE_BREAK"){
var sec = sectionIdxs.indexOf(section) + 2;
// Shows the name of the section
Logger.log("typeItem" + i + ": " + itemType + ", itemTitle: " + item.getTitle() + ", itemId: " + item.getId() + ", itemIdx: " + itemIdx + ", Section: " + sec);
}
}
}