onOpen触发组合框更新

时间:2017-09-30 16:03:01

标签: google-apps-script

情景 表单1:添加客户信息并保存在mySQL数据库中。

表单2:添加发票并选择从表单1添加的客户。需要使用Combobox来选择客户。

需要相同的建议或代码段。

注意:基于使用Google表单,我似乎无法在表单视图中更新Combobox。

先谢谢。

1 个答案:

答案 0 :(得分:0)

以下是使用电子表格中的工作表名称填充下拉Google表单列表的示例。您可以轻松地遍历包含客户名称的数据列并执行相同的操作。

守则:

function editingASimpleForm()
{
  var ss=SpreadsheetApp.openById('1bNqs3YeALOsIzMqnTg6SfK-7mHNcPZQ0ZuC81ee3LRU')
  var allShts=ss.getSheets();
  var excShts=['Form Responses 4'];
  var incShts=[];
  var form=FormApp.getActiveForm();
  var s=Utilities.formatString('Form name is <strong>%s</strong> and id is <strong>%s</strong>', form.getTitle(),form.getId());
  var allItems=form.getItems();
  /*
  for(var i=0;i<allItems.length;i++)
  {
    s+=Utilities.formatString('<br />Title: <strong>%s</strong> Type <strong>%s</strong> Id: <strong>%s</strong> Index: <strong>%s</strong>', allItems[i].getTitle(),allItems[i].getType(),allItems[i].getId(),allItems[i].getIndex())
  }
  */
  for(var i=0;i<allItems.length;i++)
  {
    var itm=allItems[i];
    if(itm.getId()=='405225448')//I got this id from the above commented out code which outputs title,type,id and index
    {
      var li0=itm;
    }
  }
  for(var i=0;i<allShts.length;i++)//this loop gets the non excluded sheet names into an array
  {
    if(excShts.indexOf(allShts[i].getName())==-1)
    {
      incShts.push(allShts[i].getName());
    }
  }
  li0.asListItem().setChoiceValues(incShts);//This populates the list
  /*
  var ui=HtmlService.createHtmlOutput(s).setWidth(1200).setHeight(450);
  FormApp.getUi().showModalDialog(ui, 'Form Editing');
  */
}

我希望这会有所帮助。如果我误解了这些问题,请告诉我。