Это моя первая публикация в переполнении стека, поэтому я заранее прошу прощения, если допустил какие-либо ошибки.
Я использую 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-файл содержит только небольшой код, который отображает некоторые сообщения при выборе пользовательского меню.
Любая помощь будет оценена!