Как сохранить постоянные данные на стороне сервера доступными для боковой панели Google Диска? - PullRequest
0 голосов
/ 14 июня 2019

Я хочу получить доступ к объектам в постоянном серверном экземпляре моего кода скрипта Служб Google из создаваемой им боковой панели HTML-документа.

Я довольно опытный в GAS, но гораздо меньше в вебедизайн.Моя общая цель - создать интерактивную боковую панель, которая представляет внутреннюю структуру Документа Google.

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

Я хочу сделать это, имея доступ к соответствию между идентификаторами элементов HTMLи объекты GAS, представляющие элементы документа Google.Построить эту корреспонденцию при первом запуске скрипта легко, но я не знаю, как ее сохранить, чтобы HTML-код имел к ней доступ.

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

Я знаю, что вы можете передавать данные в документ HTML с помощью шаблонов, но это потребует сериализацииDocument объект, или ParagraphElement объекты, или что-то еще, с чем я хочу избежать, если это возможно.Я также хочу, чтобы эти объекты поддерживали их связь с фактическим документом Google, и, насколько я понимаю, они не будут.

Я знаю, что вы можете получить доступ к кешу и / или свойствам документа, но обаони также включают сериализацию Document объектов.

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

Как я могу это сделать?Есть ли какие-либо из моих предположений неправильно?Есть ли хорошие примеры такого рода вещей?

1 Ответ

1 голос
/ 14 июня 2019

Я сделал что-то похожее на это. Я хотел отслеживать части документа и иметь возможность изменять их форматирование с боковой панели. Я хотел, чтобы это работало, даже если документ изменился.

Мое решение состояло в том, чтобы внедрить символы юникода нулевой ширины (непечатные) в документ вокруг частей, которые я хотел выделить. Затем я могу использовать поиск по шаблону, чтобы найти интересующие меня фрагменты и изменить шрифт, форматирование и т. Д.

Я использовал следующие символы:

var ZERO_WIDTH_SPACE = '\u200B';
var ZERO_WIDTH_NON_JOINER = '\u200C';
var ZERO_WIDTH_JOINER = '\u200D';
var ZERO_WIDTH_NBSP = '\uFEFF';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...