由于我的Google电子表格工作簿包含太多工作表,因此在电子表格工作簿左下角的下拉菜单中都看不到它们,因此我尝试通过以下方式修改“ How to get the list of all sheet in a dropdown list in a sidebar”中的代码独立脚本到绑定脚本,以便能够看到更长的列表。另外,我不希望我的列表出现在下拉列表中。我只希望将其作为项目符号列表。
我收到一个格式错误的HTML错误,我认为该错误是从片段中生成的。 (请参见下面的代码。)任何想法,此代码出了什么问题。
<html>
<head>
<base target="_top">
</head>
<body>
<select name="Sheets List" onchange="listSheets()")>
<? var sheets=spreadsheet.getSheets(); ?>
<? for(var i=0;i<sheets.length;i++) { ?>
<option value=<?=sheets[i].getName()?>> <?= sheets[i].getName()?></option>
<? } ?>
</select>
<script>
function listSheets(){
var name=document.getElementsByName("Sheets List")[0].value;
google.script.run.goToSheet(name);
};
</script>
</body>
</html>
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom')
.addItem('Sheets List', 'sheetsList')
.addToUi();
function sheetsList(){
var html = HtmlService.createHtmlOutputFromFile('sheets').evaluate
.setTitle('Sheets in this Workbook')
.setWidth(300);
SpreadsheetApp.getUi()
.showSidebar(html);
}
}
消息详细信息 格式错误的HTML内容:>函数listSheets(){var name = document.getElementsByName(“ Sheets List”)[0] .value; google.script.run.goToSheet(name); };
答案 0 :(得分:1)
您遇到了一些阻止侧边栏显示的问题:
HtmlService.createTemplateFromFile()
,而不是createHtmlOutputFromFile()
。.evaluate()
时包括括号。 (与第一点有关,请注意evaluate()
仅适用于HtmlTemplate对象。)sheetsList()
不应嵌套在onOpen()
函数中。spreadsheet
。GS
function onOpen() {
SpreadsheetApp.getUi().createMenu('Custom')
.addItem('Sheets List', 'sheetsList')
.addToUi();
}
function sheetsList(){
var html = HtmlService.createTemplateFromFile('sheets').evaluate()
.setTitle('Sheets in this Workbook')
.setWidth(300);
SpreadsheetApp.getUi().showSidebar(html);
}
HTML
在下面的HTML中,我删除了listSheets()
的前端JS代码,因为它不是问题范围的一部分,并且正在调用也不包含在问题中的后端函数。 < / p>
<html>
<head>
<base target="_top">
</head>
<body>
<select name="Sheets List">
<? var spreadsheet = SpreadsheetApp.getActive(); ?>
<? var sheets=spreadsheet.getSheets(); ?>
<? for(var i=0;i<sheets.length;i++) { ?>
<option value=<?=sheets[i].getName()?>> <?= sheets[i].getName()?></option>
<? } ?>
</select>
</body>
</html>
答案 1 :(得分:1)
侧边栏中的页面链接列表
https://api.instagram.com/oauth/authorize/?client_id=[MY CLIENTID!!!]&redirect_uri=[MY URL!!!]&response_type=code
您可以通过这种方式在侧栏上获得更多按钮:
function allsheetslist() {
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
var html='<table>';
shts.forEach(function(sh,i){
html+=Utilities.formatString('<tr><td><input type="button" value="%s" onClick="gotoSheet(%s);" /></td></tr>',sh.getName(),sh.getIndex());
});
html+='</table>';
html+='<script>function gotoSheet(index){google.script.run.gotoSheetIndex(index);}</script>';
var userInterface=HtmlService.createHtmlOutput(html)
SpreadsheetApp.getUi().showSidebar(userInterface);
}
function gotoSheetIndex(index) {
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
shts[index-1].activate();
}
答案 2 :(得分:0)
尝试了@Cooper方式。它对我来说更轻松,更友好。但是仍然悬而未决的问题是,没有调用“ OnClick”功能,并且在侧栏上单击工作表名称按钮时没有任何反应。我什至还添加了一个要在边栏中与工作表名称一起显示的特定字段。那很棒。现在,唯一需要的帮助就是激活点击。我尝试了许多方法,但仍然没有成功。使用的代码如下:
function allsheetsList() {
var ss = SpreadsheetApp.getActive();
var shts = ss.getSheets();
var html = '<table>';
shts.forEach(function(sh, i) {
html += Utilities.formatString('<tr><td><input type="button" value="%s" onClick="google.script.run.gotoSheet(\'%s\');" /></td>', sh.getName(), sh.getName());
html += Utilities.formatString('<td><input type="button" value="%s" /></td></tr>', sh.getRange("C2").getValue());
});
html += '</table>';
var userInterface = HtmlService.createHtmlOutput(html).setTitle("Sheet Link List");
SpreadsheetApp.getUi().showSidebar(userInterface);
}
function gotoSheet(name) {
var ss = SpreadsheetApp.getActive();
ss.getSheetByName(name).activate();
}