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