Я надеюсь использовать разные боковые панели для каждого из моих листов. Я добавил плавающую кнопку в нижней части боковой панели в надежде легко переключаться между листами и открывать соответствующую боковую панель по щелчку. Я провел тест и смог заменить html-файл боковой панели по щелчку, используя
.gs
return HtmlService.createHtmlOutputFromFile('yellowlog');
}
function newPage(page) {
return HtmlService.createHtmlOutputFromFile(page).getContent()
}
и
.html
<script>
function changePage(page) {
document.open();
document.write(page);
document.close();
}
</script>
<body>
First Page
<button onclick="google.script.run.withSuccessHandler(changePage).newPage('success')">Next Page</button>
но серверная сторона по-прежнему пыталась запустить исходный код, запрашивая поля, которые я не отображал, и пытаясь ввести данные не на тот лист.
Я настроил несколько функций на стороне сервера, чтобы открыть правильный лист и соответствующую боковую панель т.е.:
function jumpToYellow(){
var spreadsheet= SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Yellow Log');
spreadsheet.setActiveSheet(sheet);
}
function yellowPage(){
var template = HtmlService.createTemplateFromFile("yellowlog");
var html = template.evaluate();
html.setTitle("Yellow Log");
SpreadsheetApp.getUi().showSidebar(html);
jumpToYellow();
}
function appendYellowData(data){
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Yellow Log");
ws.appendRow([data.first,data.level,data.notes]);
}
но просто не могу заставить свои кнопки на стороне html вызывать их....
Вам нужен новый HTML-шаблон с двумя кнопками для вызова
yellowPage()
и скриптлет для получения необходимых данных и передачи их наappendYellowData(data)
. Вы можете проверить developers.google.com/apps-script/guides/html/…, как это сделать.