我正在Google工作表的侧边栏菜单中设置脚本中需要的一些变量。
我的脚本已在运行。 很简单,在表单提交时,它将在我的日历中创建一个事件。
但是,为了简化脚本的安装,我想在边栏中显示一个下拉列表,其中包含工作表中所有工作表的名称。
我看到了各种各样的帖子,它们显示了如何执行像这样的下拉列表:
但这不是我的问题,我的问题是如何获取工作表列表并将其放入下拉列表中。
感谢您的帮助,
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{name: "Sync Calendar Now", functionName: "syncActive"}];
entries.push(null); // adding line separator
entries.push({name: "Settings", functionName: "paramID"});
spreadsheet.addMenu(sheetName, entries);
};
function paramID() {
//TODO : Mettre ID calendrier ici :)
var html = HtmlService.createHtmlOutputFromFile('SideBar')
.setTitle('My custom sidebar')
.setWidth(300);
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.showSidebar(html);
}
这是我如何获取工作表的列表名称
function getListNames(){
var out = new Array()
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i=0 ; i<sheets.length ; i++) out.push( sheets[i].getName() )
Logger.log(out);
return out
}
例如,我的工作表中包含:工作表1,工作表2,工作表3
打开侧边栏时,我想显示一个带有以下内容的下拉列表:表格1,表格2和表格3
编辑:接下来,我要返回选择的值。
答案 0 :(得分:1)
您可以使用scriptlets
这使您可以在html
代码中使用Apps脚本功能:
<body>
<select name="Available sheets" onchange="myJsFunction()")>
<? var sheets=spreadsheet.getSheets(); ?>
<? for(var i=0;i<sheets.length;i++) { ?>
<option value=<?=sheets[i].getName()?>> <?= sheets[i].getName()?></option>
<? } ?>
</select>
<script>
function myJsFunction(){
var name=document.getElementsByName("Available sheets")[0].value;
google.script.run.goToSheet(name);
};
</script>
</body>
google.script.run允许您将选定的工作表传递给Apps脚本功能。
然后,在.gs文件中,您需要根据所选工作表在Apps脚本函数中定义要执行的操作,例如:
function goToSheet(selectedSheetName){
Logger.log('The selected sheet is: '+ selectedSheetName);
}
此外,您需要更改行var html = HtmlService.createHtmlOutputFromFile('SideBar')
到
var html = HtmlService.createTemplateFromFile('SideBar').evaluate()
允许脚本评估scriptlet的内容。