Обновление: Это лучший способ задать следующий вопрос.
Есть ли Id
подобный атрибут для Element
в Document
, который я могу использовать для достижения этого элемента в более позднее время. Допустим, я вставил абзац в документ следующим образом:
var myParagraph = 'This should be highlighted when user clicks a button';
body.insertParagraph(0, myParagraph);
Затем пользователь вставляет еще один в начале вручную (т. Е. Печатая или вставляя). Теперь childIndex
моего абзаца изменится на 1
с 0
. Я хочу дойти до этого абзаца позже и выделить его. Но из-за вставки childIndex
больше не действителен. Не существует Id
подобного атрибута для интерфейса Element
или любого другого типа, реализующего это. CahceService
и PropertiesService
принимают только данные String
, поэтому я не могу сохранить myParagraph
как Object
.
Ребята, у вас есть идея достичь того, чего я хочу?
Спасибо
Старая версия того же вопроса (необязательно для чтения):
Представьте, что пользователь выбирает слово и нажимает кнопку выделения моего дополнения. Затем она делает то же самое для нескольких слов. Затем она редактирует документ таким образом, что изменяются начальные и конечные индексы этих выделенных слов.
В этот момент она нажимает кнопку удаления выделения . Мое дополнение должно отключить подсветку всех ранее выбранных слов. Проблема в том, что я не хочу сканировать весь документ и найти какой-либо выделенный текст. Я просто хочу прямой доступ к тем, которые ранее выбрали.
Есть ли способ сделать это? Я пытался кэшировать выбранные элементы. Но когда я возвращаю их из кеша, я получаю ошибку TypeError: Cannot find function insertText in object Text.
. Кажется, что тип объекта или что-то меняется между cache.put()
и cache.get()
.
var elements = selection.getSelectedElements();
for (var i = 0; i < elements.length; ++i) {
if (elements[i].isPartial()) {
Logger.log('partial');
var element = elements[i].getElement().asText();
var cache = CacheService.getDocumentCache();
cache.put('element', element);
var startIndex = elements[i].getStartOffset();
var endIndex = elements[i].getEndOffsetInclusive();
}
// ...
}
Когда я возвращаю элемент, я получаю TypeError: Cannot find function insertText in object Text.
ошибку.
var cache = CacheService.getDocumentCache();
cache.get('text').insertText(0, ':)');
Я надеюсь, что смогу четко объяснить, чего я хочу достичь.