我在Sheet中有两列,A是学院名,B是城市名。我想创建一个表单,其中有两个下拉菜单。首先是城市,第二是大学。然后,如果您在第一个下拉列表中选择城市,则第二个下拉列表应仅显示该城市的大学。


我采用的方法是,

从工作表中读取数据并为城市创建数组。通过评估将两个变量,城市数组和大学和城市的2D数组传递给HTML
function showSidebarAddNew(){

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName('option');
 var CollegeList = sheet.getDataRange()。getValues();
 var cities = [];
 for(var d = 0; d< CollegeList.length; d ++)
 {&#的xD;
如果(cities.indexOf(CollegeList [d] [1])== - 1){cities.push(CollegeList [d] [1])}&#的xD;
 }&#的xD;
&#的xD;
 var ui = SpreadsheetApp.getUi();
 var template = HtmlService.createTemplateFromFile('form');
 &#的xD;
 template.cities =城市;&#的xD;
 template.CollegeList = CollegeList;&#的xD;
 &#的xD;
 ui.showSidebar(template.evaluate()。setTitle('New Form'));
}

 直到这里一切正常。
接下来在HTML表单中,创建两次下降。从City Dropdown调用onChange函数,它将改变大学列表的下拉选项



< form id =”form1“> &#的xD;
 &#的xD;
 < label for =“city”> City< / label>
 < select name =“city”size =“1”id =“city”onchange =“UpdateRange(this.value);”>
 <选项隐藏已选中>< / option>
 <?for(var c = 0; c< cities.length; c ++){?> < option value =“<?= cities [c]?>”><?= cities [c]?>< / option> <}>?&#的xD;
 < /选择>&#的xD;
 &#的xD;
 &#的xD;
 < label for =“city”> Colleges< / label>
 < select name =“city”size =“1”id =“college”>
 <选项隐藏已选中>< / option>
 < /选择>&#的xD;
&#的xD;
 &LT峰; br>&#的xD;
 < input type =“submit”class =“btn btn-primary”value =“Submit”>
 < /形式> 代码>
&#的xD;
 现在在onChange函数中,我需要访问名为“CollegeList”的变量,这样我就可以从这个城市过滤大学列表并创建选项,但是我无法访问< Script>
标记内的变量“CollegeList”。
< script type =“text / javascript”>
 &#的xD;
函数UpdateRange(v)
 {&#的xD;
 //清除列表中的所有选项
 document.getElementById('college')。options.length = 0; &#的xD;
 //添加默认(空白)选项
 var optn = document.createElement(“OPTION”);
 optn.text ='';
 optn.value ='';
 &#的xD;
的document.getElementById( '大学')options.add(OPTN)&#的xD;
 &#的xD;
 var thisCity = CollegeList.filter(function(dr){return dr [1] == v}

 for(var i = 0; i< thisCity.length; i ++)
 {
 var optn = document.createElement(“OPTION”);
 optn.text = thisCity [i] [0] ;
 optn.value = thisCity [i] [0];
 document.getElementById('college')。options.add(optn)
&# XA;}&#的xD;
}&#的xD;
< /脚本> 代码>
&#的xD;
 当我尝试在不使用变量“CollegeList”的情况下创建随机选项时,会创建该选项,表示创建选项的方式是有效的。只有变量不起作用。请帮助。

答案 0 :(得分:0)
我认为您忘记使用scriptlet语法<?=CollegeList?>
访问CollegeList变量。我通常创建客户端javascript变量,其名称与html顶部的服务器端变量同名,如下所示:
<script>
var CollegeList = <?=CollegeList?>
var cities = <?=cities?>
</script>
然后,您可以在其余的javascript中使用cities
和CollegeList
。