【发布时间】:2019-07-28 05:30:57
【问题描述】:
我正在尝试创建一个带有下拉列表的输入框,其中该列表基于从电子表格中提取的二维数组。
到目前为止,我的研究告诉我,如果我将 HtmlService.createHtmlOutputFromFile 存储在一个变量中,那么我可以“设置该变量的属性”,然后将其传递给 html。 (我看到这个专门用于 HtmlService.createTemplateFromFile)
//google script code
function selectMonth(){
var monthTab = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
var LR = monthTab.getRange("B1").getDataRegion().getLastRow()
var sNamesArray = monthTab.getRange(1,2,LR,2).getValues()
var monthBox = HtmlService.createHtmlOutputFromFile('Month Box')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(250)
.setHeight(50);
//i believe the error to be occurring on this line
monthBox.mList = sNamesArray
SpreadsheetApp.getUi().showModalDialog(monthBox, 'Student Name List');
};
<!--html code-->
<select id="tabMonth">
<option disabled selected>Select Month</option>
<?for(var i=0;i<list.length;i++){ ?>
<option value=<?mList[i][1]?>><?mList[i][0]?></option>
<?}?>
</select>
但每次我尝试运行代码时都会出现错误: "对象不允许添加或更改属性。"
根据我所知道的错误发生在上面指示的行
【问题讨论】:
-
从 JavaScript 中,您可以使用 google.script.run 调用 selectMonth() 并将数组返回给 withSuccessHandler。处理程序可以将其发送到函数名或通过匿名函数处理。
-
看看这个example。我认为它真的很接近你想要的。
-
谢谢@Cooper。但我真的很想确定这种特殊的技术,这是我提出问题的例子。 [此视频](youtube.com/watch?v=f9dqsHDrQCc)
-
文件month box.html吗?里面有这段代码吗?
<select id="tabMonth"> <option disabled selected>Select Month</option> <?for(var i=0;i<list.length;i++){ ?> <option value=<?mList[i][1]?>><?mList[i][0]?></option> <?}?> </select> -
@Cooper 是的。该代码在我的 Month Box.html 文件中。