Как создать выпадающий запрос в Google App Script - PullRequest
0 голосов
/ 25 октября 2018

Я хотел бы иметь диалоговое окно пользовательского интерфейса, состоящее из всех доступных листов в рабочей книге, чтобы пользователь выбрал лист, с которым он хочет работать, и значение, возвращаемое сценарию для обработки.

Я собираюимена листов в массив и хотели бы представить их в раскрывающемся списке для выбора.Может кто-нибудь указать мне на документы, как это сделать?

1 Ответ

0 голосов
/ 25 октября 2018

Вот пример сценария, привязанного к электронной таблице.Для веб-приложения это будет аналогично.

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