我正在谷歌工作表的侧边栏菜单中工作,以设置脚本中需要的一些变量。
我的脚本已经在工作了。 这很容易,在表单提交时,它将在我的日历中创建一个事件。
但是,为了简化脚本的安装,我想在侧边栏中显示一个下拉列表,其中包含工作表中所有工作表的名称。
我看到各种帖子,展示了如何做这样的下拉列表:
- 如何在输入框中创建下拉列表?
- 如何创建包含下拉列表的 HTML 对话框?
但这不是我的问题,我的问题是如何获取工作表列表并将其放在下拉列表中。
感谢您的帮助,
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
编辑:接下来我想返回选定的值。
您可以使用脚本
这允许您在html
代码中使用应用脚本函数:
<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 允许您将所选工作表传递给应用脚本函数。
在 .gs 文件中,您需要根据所选工作表在应用程序脚本函数中定义要执行的操作,例如:
function goToSheet(selectedSheetName){
Logger.log('The selected sheet is: '+ selectedSheetName);
}
此外,您需要更改线路var html = HtmlService.createHtmlOutputFromFile('SideBar')
自var html = HtmlService.createTemplateFromFile('SideBar').evaluate()
以允许脚本评估脚本的内容。