如何在侧边栏的下拉列表中获取所有工作表的列表



我正在谷歌工作表的侧边栏菜单中工作,以设置脚本中需要的一些变量。

我的脚本已经在工作了。 这很容易,在表单提交时,它将在我的日历中创建一个事件。

但是,为了简化脚本的安装,我想在侧边栏中显示一个下拉列表,其中包含工作表中所有工作表的名称。

我看到各种帖子,展示了如何做这样的下拉列表:

  • 如何在输入框中创建下拉列表?
  • 如何创建包含下拉列表的 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()

以允许脚本评估脚本的内容。

相关内容

  • 没有找到相关文章