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

标签 javascript html google-apps-script google-sheets

我正在 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

编辑:接下来我想返回所选的值。

最佳答案

您可以使用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 的内容。

关于javascript - 如何获取侧边栏下拉列表中所有工作表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57710529/

相关文章:

javascript - 使用 Mechanical Turk 的人群 html 元素在 <form> 下出现意外的空间

javascript - 如果输入字段为空,则隐藏带 Angular div

javascript - 通过 Google App 脚本将 Google Sheet 数据传递到本地 Node.js 服务器

javascript - 如果鼠标悬停在 X 上,jQuery/Javascript 图片库会更改图片,但如果小于 X,则不会

javascript - .then 中嵌套的 Promise 在第一个 Promise Node 之前运行

javascript - 捕捉 svg 动画分组路径

javascript - iframe动态src

html - 图像 float 页脚也 float

google-apps-script - 在 UrlFetchApp 中缓存

google-apps-script - 当 Zapier 更新工作表时运行 onEdit 触发器