Google apps script 在Google工作表的侧栏中对索引进行排序
我正在使用下面的脚本在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');
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()
进行以下修改
发件人:
致:
- 在这种情况下,图纸名称按升序排序
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;
}