Создание пользовательского интерфейса с помощью Google Apps Script - PullRequest
0 голосов
/ 28 июня 2018

Это моя первая публикация в переполнении стека, поэтому я заранее прошу прощения, если допустил какие-либо ошибки.

Я использую Google Apps Script для проекта, которым я занимаюсь, потому что я взаимодействую с Документами Google и листами Google. Google Script имеет устаревшую службу пользовательского интерфейса, что очень расстраивает меня.

До сих пор я написал программу на JavaScript, которая анализирует часть «оглавления» документа Google и извлекает нужные элементы. (Если таблица содержания изменяется, то полученные элементы могут также отличаться.) Теперь я собираюсь установить флажок, который использует все элементы, которые я извлек из таблицы содержания, в качестве параметров и после того, как пользователи выбирают и нажав кнопку "отправить", будет создан новый лист Google. Конечно, я буду работать с этим новым Google Sheet, но сначала хочу решить эту проблему.

Я посмотрел HTML-сервис, пользовательский интерфейс, рекомендованный Google Script, но я не слишком разбираюсь в HTML. Что наиболее сложно, так это то, что если я использую HTML для создания флажка, как я должен получить все элементы, которые я проанализировал из JavaScript, переданные в HTML-файл, проверить, какие параметры отмечены, и затем вернуть проверенные параметры обратно в JavaScript, чтобы я мог сделать дальнейшую операцию? Это вообще возможно? Или у меня неправильное представление?

Что у меня так далеко:

//custom menu
function onOpen() 
{
  var ui = DocumentApp.getUi();
  ui.createMenu('Custom Menu')
  .addItem('Export Checksheets', 'customMenu')
  .addToUi();
}

//parse the table of contents
function readFile() 
{
  var options = [];

  var testDoc = DocumentApp.getActiveDocument();
  var file = testDoc.getBody();
  var tableOfCon = DocumentApp.ElementType.TABLE_OF_CONTENTS;

  var searchRes = file.findElement(tableOfCon);

  //If the element exists
  if (searchRes)
  {
    var TC = searchRes.getElement().asTableOfContents();
    var numChild = TC.getNumChildren();

    for (var i=0; i < numChild; i++) 
    {
      var info = {};
      var TCItem = TC.getChild(i).asParagraph();
      var TCItemText = TCItem.getChild(0).asText();
      var TCItemAttrs = TCItemText.getAttributes();   //for future usage

      //get all the options
      if (!TCItemText.isBold())
      {
        options.push(TCItem.getText());
      }
    }
  }
  Logger.log(options);    //which successfully displays the items retrieved
}

//linked to the HTML file
function customMenu()
{
  var html = HtmlService.createHtmlOutputFromFile('Index');
  html.setHeight(350).setWidth(280);
  var ui = DocumentApp.getUi().showModalDialog(html, 'Hello!');
}

Мой HTML-файл содержит только небольшой код, который отображает некоторые сообщения при выборе пользовательского меню.

Любая помощь будет оценена!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...