如何获取下拉菜单的预填充链接

时间:2021-06-19 08:14:02

标签: google-apps-script

我能够在不检查元素的情况下获取谷歌表单的 id。但是,当表单包含下拉列表时,这不起作用,我无法访问下拉列表的 ID(预填充链接),但它适用于其他类型,例如简答题、多项选择等。 这是我到目前为止的代码

function getPreFillEntriesMap_(id){
  var form = FormApp.openById(id);
  var items = form.getItems();
 // Logger.log(items)
  var newFormResponse = form.createResponse();
  var itms = [];
  for(var i = 0; i < items.length; i++){
    var response = getDefaultItemResponse_(items[i]);
    if(response){
      newFormResponse.withItemResponse(response);
      itms.push({
        id: items[i].getId(),
        entry: null,
        titile: items[i].getTitle(),
        type: "" + items[i].getType()
      });
    }
  }
  Logger.log(itms)

  var ens = newFormResponse.toPrefilledUrl().split("&entry.").map(function(s){
    return s.split("=")[0];
  });
  ens.shift();

  return itms.map(function(r, i){
    r.entry = this[i];
    return r;
  }, ens);
}

function getDefaultItemResponse_(item){
  switch(item.getType()){
    case FormApp.ItemType.TEXT:
      return item.asTextItem().createResponse("1");
      break;
    case FormApp.ItemType.MULTIPLE_CHOICE:
      return item.asMultipleChoiceItem()
        .createResponse(item.asMultipleChoiceItem().getChoices()[0].getValue());
      break;
    default:
      return undefined; 
  } 
}
function run(){
 var obj= JSON.stringify(getPreFillEntriesMap_("1FtMYeluNpq2t82s0waZre648IDT_hRu63Be5ClZSCS0"),null,"  ");
 // Logger.log(obj)
  var entries_id= [];
  var stringify = JSON.parse(obj);
  for (var i = 0; i < stringify.length; i++) {
   // Logger.log(stringify[i]['entry'])
    entries_id.push(stringify[i]['entry'])
    
  
}
  return entries_id;
 
}

0 个答案:

没有答案