在Google表格的边栏中对索引进行排序

拉希

我正在使用以下脚本在Google表格中创建边栏。此侧栏是此电子表格中所有非隐藏选项卡(工作表)的索引

我希望该索引按字母顺序排序。

function showSidebar() {
  var ui = HtmlService.createTemplateFromFile('sidebar.html')
  .evaluate()
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setTitle('Index Sidebar');
  
  SpreadsheetApp.getUi().showSidebar(ui);
}

function getSheetNames() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  
  return sheetNamesIds(sheets);
}

function sheetNamesIds(sheets) {
  
  var indexOfSheets = [];
  
  sheets.forEach(function(sheet){
    if(sheet.isSheetHidden()!= true)indexOfSheets.push([sheet.getSheetName(),sheet.getSheetId()]);
    
  });
  
  return indexOfSheets; 
}


function returnListItems(text) {
  
    var sheetNames = getSheetNames()
    
    // Checking if there is a search term
    if (text) {
      sheetNames = sheetNames.filter(n => n[0].includes(text))
    }
    
    var htmlString = sheetNames.map(function(d) {
        var string = `
        <li> 
          <input
           type="button"
           value="${d[0]}"
           onclick=\"google.script.run.setActiveByName('${d[0]}')\"/>
        </li>
        `
        return string }).join(' ')
    
    return htmlString
}

function setActiveByName(name) {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name)
  SpreadsheetApp.setActiveSheet(ss)
}

任何想法如何..?

Tanaike

我相信您的目标如下。

  • 您要按字母顺序对数组的工作表名称进行排序getSheetNames()
    • I would like this Index sorted alphabetically.,我认为您想实现以上目标。

对于您的情况,我想对进行以下修改sheetNamesIds()

从:

function sheetNamesIds(sheets) {
  
  var indexOfSheets = [];
  
  sheets.forEach(function(sheet){
    if(sheet.isSheetHidden()!= true)indexOfSheets.push([sheet.getSheetName(),sheet.getSheetId()]);
    
  });
  
  return indexOfSheets; 
}

至:

function sheetNamesIds(sheets) {
  
  var indexOfSheets = [];
  
  sheets.forEach(function(sheet){
    if(sheet.isSheetHidden()!= true)indexOfSheets.push([sheet.getSheetName(),sheet.getSheetId()]);
    
  });
  
  indexOfSheets.sort((a, b) => a[0] > b[0] ? 1 : -1);  // Added

  return indexOfSheets;
}
  • 在这种情况下,工作表名称按升序排序。

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章