Google Sheet 带下拉输入的自定义对话框
Google Sheet Custom dialogs With Dropdown Input
我想为用户创建一个自定义对话框,以便select他们想要使用的选项卡。一旦他们完成 selection。 selected 选项卡从隐藏更改为查看。默认情况下,所有选项卡都是隐藏的。
我设法在打开时弹出对话框。我的问题是如何处理 html?
中的提交事件
<select name="Tabs">
<option value="1">Tab 1</option>
<option value="2">Tab 2</option>
</select>
<hr/>
<button onmouseup="select()">Select</button>
<script>
window.select = function() {
//how do I get the selected element?
//how do I enable a tab?
google.script.host.close();
};
</script>
您可以在函数 select()
中使用 getElementsByName 检索选定的元素,如下所示:
<script>
function select() {
var tab = document.getElementsByName("Tabs")[0].value;
google.script.run.unhide(tab);
google.script.host.close();
};
</script>
相应的 Apps 脚本代码为:
function onOpen() {
hideTabs();
showDialog();
}
function showDialog() {
var html = HtmlService.createHtmlOutputFromFile('Page')
.setWidth(400)
.setHeight(300);
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.showModalDialog(html, 'Which tab do you want to see?');
}
function hideTabs(){
var sheets=SpreadsheetApp.getActive().getSheets();
for(var i=1;i<sheets.length;i++){
sheets[i].hideSheet();
}
}
function unhide(tab){
SpreadsheetApp.getActive().getSheetByName(tab).showSheet();
}
注释
- 请注意TheMaster和Tanaike的意见
- 所提供的代码片段隐藏了除第一个 sheet 之外的所有代码片段,因为你不可能全部死去 sheets
- 此代码有效,前提是 sheet 名称为“1”和“2”的内容存在于传播中sheet
- 您需要使用 installable
onOpen
触发器(请参阅:手动管理触发器)以便在打开跨页时自动显示对话框sheet
我想为用户创建一个自定义对话框,以便select他们想要使用的选项卡。一旦他们完成 selection。 selected 选项卡从隐藏更改为查看。默认情况下,所有选项卡都是隐藏的。
我设法在打开时弹出对话框。我的问题是如何处理 html?
中的提交事件<select name="Tabs">
<option value="1">Tab 1</option>
<option value="2">Tab 2</option>
</select>
<hr/>
<button onmouseup="select()">Select</button>
<script>
window.select = function() {
//how do I get the selected element?
//how do I enable a tab?
google.script.host.close();
};
</script>
您可以在函数 select()
中使用 getElementsByName 检索选定的元素,如下所示:
<script>
function select() {
var tab = document.getElementsByName("Tabs")[0].value;
google.script.run.unhide(tab);
google.script.host.close();
};
</script>
相应的 Apps 脚本代码为:
function onOpen() {
hideTabs();
showDialog();
}
function showDialog() {
var html = HtmlService.createHtmlOutputFromFile('Page')
.setWidth(400)
.setHeight(300);
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.showModalDialog(html, 'Which tab do you want to see?');
}
function hideTabs(){
var sheets=SpreadsheetApp.getActive().getSheets();
for(var i=1;i<sheets.length;i++){
sheets[i].hideSheet();
}
}
function unhide(tab){
SpreadsheetApp.getActive().getSheetByName(tab).showSheet();
}
注释
- 请注意TheMaster和Tanaike的意见
- 所提供的代码片段隐藏了除第一个 sheet 之外的所有代码片段,因为你不可能全部死去 sheets
- 此代码有效,前提是 sheet 名称为“1”和“2”的内容存在于传播中sheet
- 您需要使用 installable
onOpen
触发器(请参阅:手动管理触发器)以便在打开跨页时自动显示对话框sheet