google-apps-script - 在 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)
}
任何想法如何..?
解决方案
我相信你的目标如下。
- 您想按字母顺序对数组的工作表名称从
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;
}
- 在这种情况下,工作表名称按升序排序。
参考:
推荐阅读
- javascript - 在 vue.js 中使用 ionicons 5
- python - 为什么存储在networkx图中的边会自动乱序移动?
- regex - 如何将 tm_map、removeWords、函数与正则表达式值一起使用?
- php - 获取所有可能安装的 php 版本的最佳方法
- javascript - 使用 JavaScript 的视频弹出窗口
- java - Oracle sql join 与 3 个表
- python - 我在这段代码中找不到 idel 有什么问题
- python - 在 Pandas 中组合数据帧而不考虑零
- asp.net-core-signalr - 从控制台客户端调用 SignalR Core,但 JWT 授权失败
- python - 用 Python 合并列表