我正在尝试创建一个带有下拉列表的输入框,其中该列表基于从电子表格中提取的二维数组。
到目前为止,我的研究告诉我,如果我将 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>
但是每次我尝试运行代码时都会收到错误: “对象不允许添加或更改属性。”
根据我所知,错误发生在上面指示的行上
最佳答案
问题:
- 尝试修改
HtmlOutput
对象,而不是修改HtmlTemplate
对象。
解决方案:
- 只有 html 模板可以使用变量进行修改。修改
模板
并对其进行评估以返回HtmlOutput
片段:
var monthBox = HtmlService.createTemplateFromFile('Month Box');//Type: HtmlTemplate
monthBox.mList = sNamesArray;
monthBox = monthBox.evaluate() //Type: HtmlOutput after evaluation
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(250)
.setHeight(50);
monthbox = monthbox.getContent();
引用文献:
关于html - 我正在尝试将变量从 Google 脚本传递到 HtmlOutputFromFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57238218/