【问题标题】:Handling page breaks / sections处理分页符/部分
【发布时间】:2021-02-18 13:30:28
【问题描述】:

我正在使用 Google Apps 脚本更新 Google 表单中的下拉菜单,该脚本运行良好。下拉列表变得如此之大,以至于我不得不在 Google 表单中创建多个部分。我正在努力创建一个跳过分节符的代码。

我猜关键点是main函数中的forEach方法:

labels.forEach(function(label,i)

我不确定应该使用哪种方法,以便主函数更新所有下拉列表。 是

FormApp.PageNavigationType.CONTINUE;

正确的使用方法?

这是我到目前为止的代码:

var ssID = "...";
var formID = "...";
var wsData = SpreadsheetApp.openById(ssID).getSheetByName("data");  
var form = FormApp.openById(formID);
var section = form.getGoToPage(1);

function main(){
  var labels = wsData.getRange(1,1,1,wsData.getLastColumn()).getValues()[0];
 

  labels.forEach(function(label,i){
      var options = wsData
                          .getRange(2,i+1,wsData.getLastRow()-1,1)
                          .getValues()
                          .map(function(o){ return o[0]})
                          .filter(function(o){ return o !==""});
      updateDropDownUsingTitle(label,options);
  });


}


function updateDropDownUsingTitle(title,values) {

  
  var items = form.getItems();
  var titles = items.map(function(item){
    return item.getTitle();


  });

  var pos = titles.indexOf(title);
  if(pos !== -1){
  var item = items[pos];
  var itemID = item.getId();
  updateDropdown(itemID,values);
  }
}

function updateDropdown(id,values) {

  var item = form.getItemById(id);
  item.asListItem().setChoiceValues(values);
}

【问题讨论】:

  • “我正在努力创建一个跳过分节符的代码”是什么意思?
  • 运行代码时出现以下错误:异常:项目类型的无效转换:PAGE_BREAK。在第 52 行。因为 asListItem() 试图将值设置为 PAGE_BREAK 项。我想找到一种方法来处理这个异常。
  • 你可以try-catch那个函数,我的问题是下拉列表的目的是什么?

标签: javascript google-apps-script google-forms


【解决方案1】:

一种方法是过滤项目列表,使其仅包含您的下拉列表项目。

var items = form.getItems();
var listItems = items.filter(item=>item.getType() === 'LIST')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2015-03-18
    • 2014-06-12
    相关资源
    最近更新 更多