Назначение уникальных боковых панелей для каждого листа в рабочей книге Google Sheets

avatar
Justin Wiles
1 июля 2021 в 18:43
34
0
0

Я надеюсь использовать разные боковые панели для каждого из моих листов. Я добавил плавающую кнопку в нижней части боковой панели в надежде легко переключаться между листами и открывать соответствующую боковую панель по щелчку. Я провел тест и смог заменить 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 вызывать их....

Источник
CMB
1 июля 2021 в 21:10
0

Вам нужен новый HTML-шаблон с двумя кнопками для вызова yellowPage() и скриптлет для получения необходимых данных и передачи их на appendYellowData(data). Вы можете проверить developers.google.com/apps-script/guides/html/…, как это сделать.

Ответы (0)