获取 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);
    }
  }
}