需要根据旁边的数据跳过一些数据

Need to skip some data depending on data next to it

我正在尝试将数据添加到来自 google sheet 的 google 表单。我真的可以做到。但是知道我想跳过一些选项,我想跳过星期天。我有这个 table->

实际上我正在使用此代码将选项添加到表单中:

function getDataFromSpreadSheet(){
  var [header, ...data] = timeStore.getDataRange().getDisplayValues();
  var choices = {};
  header.forEach(function(title, index){
    choices[title] = data.map(row => row[index]).filter(e => e !== "");
  });
   Logger.log(choices);
  return choices;
}

function populateTimeOptions(){
  var items = googleForm.getItems();
  var choices = getDataFromSpreadSheet();

  items.forEach(function(item){
    var itemTitle = item.getTitle();
     Logger.log(itemTitle);
    if(itemTitle in choices){
      var itemType = item.getType();
      Logger.log(itemType + " " + itemTitle);
      switch(itemType){
        case FormApp.ItemType.LIST:
        item.asListItem().setChoiceValues(choices[itemTitle]);
        default:
        Logger.log("Ignore question", itemTitle);
      }
    }
  });
}

我不太了解 JavaScript 但我想这应该是添加数据和添加过滤器选项的正确方法。

希望有人能帮助我。

感谢阅读。

data.forEach(r => {if(r[1] != 'Sunday'});

在映射数据之前,您可以先过滤数据以删除属于星期日的日期。

示例代码:

function getDataFromSpreadSheet(){
  var [header, ...data] = timeStore.getDataRange().getDisplayValues();
  var choices = {};
  header.forEach(function(title, index){
    choices[title] = data.filter(row => row[1] !== 'Sunday').map(row => row[index]).filter(e => e !== "");
  });
   Logger.log(choices);
  return choices;
}

修改完成:

  • 通过检查索引 1 值是否不是 Sunday 来过滤 datadata.filter(row => row[1] !== 'Sunday')

输出:

执行日志

2:42:55 AM  Notice  Execution started
2:42:56 AM  Info    {Day=[Thursday, Friday, Saturday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Monday, Tuesday, Wednesday], Date=[07/01/2021, 07/02/2021, 07/03/2021, 07/05/2021, 07/06/2021, 07/07/2021, 07/08/2021, 07/09/2021, 07/10/2021, 07/12/2021, 07/13/2021, 07/14/2021]}
2:42:58 AM  Notice  Execution completed