Вот пример сценария, привязанного к электронной таблице.Для веб-приложения это будет аналогично.
В Code.gs
function test() {
try {
var output = HtmlService.createHtmlOutputFromFile('HTML_Sidebar');
SpreadsheetApp.getUi().showSidebar(output);
}
catch(err) {
Logger.log(err);
}
}
function getSheets() {
try {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var names = [];
for( var i=0; i<sheets.length; i++ ) {
names.push(sheets[i].getName());
}
return names;
}
catch(err) {
Logger.log(err);
}
}
function changeSheet(name) {
try {
var spread = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spread.getSheetByName(name);
SpreadsheetApp.getActiveSpreadsheet().setActiveSheet(sheet);
}
catch(err) {
Logger.log(err);
}
}
В HTML_Sidebar
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<select id="mySelect" onchange="selectChange(this)">
</select>
<script>
function selectChange(select) {
google.script.run.changeSheet(select.value);
}
function sheetNames(names) {
var select = document.getElementById("mySelect");
for( var i=0; i<names.length; i++ ) {
var option = document.createElement("option");
option.text = names[i];
select.add(option);
}
}
(function () { google.script.run.withSuccessHandler(sheetNames).getSheets(); }());
</script>
</body>
</html>