Google apps script 在Google工作表的侧栏中对索引进行排序

Google apps script 在Google工作表的侧栏中对索引进行排序,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在使用下面的脚本在Google工作表中创建一个侧栏。此侧栏是此电子表格中所有非隐藏选项卡(工作表)的索引 我希望这个索引按字母顺序排序 function showSidebar() { var ui = HtmlService.createTemplateFromFile('sidebar.html') .evaluate() .setSandboxMode(HtmlService.SandboxMode.IFRAME) .setTitle('Index Sidebar');

我正在使用下面的脚本在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)
}
函数showSidebar(){
var ui=HtmlService.createTemplateFromFile('sidebar.html')
.评估()
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle(“索引侧栏”);
SpreadsheetApp.getUi().showSidebar(ui);
}
函数getSheetNames(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();
返回图纸名称ID(图纸);
}
函数SheetNameId(工作表){
var indexOfSheets=[];
表.forEach(功能(表){
if(sheet.isSheetHidden()!=true)indexOfSheets.push([sheet.getSheetName(),sheet.getSheetId());
});
返回索引表;
}
函数returnListItems(文本){
var sheetNames=getSheetNames()
//检查是否有搜索词
如果(文本){
sheetNames=sheetNames.filter(n=>n[0]。包括(文本))
}
var htmlString=sheetNames.map(函数(d){
变量字符串=`
  • ` 返回字符串})。连接(“”) 返回htmlString } 函数setActiveByName(名称){ var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(名称) 电子表格应用程序setActiveSheet(ss) }

    有什么想法吗?

    我相信你的目标如下

    • 您想从
      getSheetNames()
      对数组的工作表名称按字母顺序排序。
      • 中,我希望此索引按字母顺序排序。
        ,我认为您希望实现上述目标
    在您的情况下,我建议对
    sheetNamesIds()
    进行以下修改

    发件人: 致:
    • 在这种情况下,图纸名称按升序排序
    参考:

    HTML
    function removeElement(elementId){var element=document.getElementById(elementId);element.parentNode.removeChild(element);}函数buildList(text){google.script.run.withSuccessHandler(onSuccess.returnListItems(text)}函数onSuccess(result){var element=document.createElement(“ol”)element.innerHTML=result var sidebar=document.getElementById(“sidebar”)sidebar.appendChild(element)}
    使用比较函数按标题对索引表排序@库珀:对不起,我猜它会出现在脚本文件中,未被接受的标识符,意味着我需要给
    a
    b
    赋值?
    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;
    }