Update:这是提出以下问题的更好方法。
有没有一个Id
就像属性Element
in a Document
我可以用它来稍后到达该元素。假设我在文档中插入了一个段落,如下所示:
var myParagraph = 'This should be highlighted when user clicks a button';
body.insertParagraph(0, myParagraph);
然后,用户在开头手动插入另一个(即通过键入或粘贴)。现在childIndex
我的段落改为1
from 0
。我想稍后再讲到该段落并突出显示它。但由于插入,childIndex
不再有效。没有Id
喜欢属性Element
接口或任何实现该接口的类型。CahceService
and PropertiesService
只接受String
数据,所以我无法存储myParagraph
as an Object
.
你们有什么想法来实现我想要的吗?
Thanks,
同一问题的旧版本(可选阅读):
想象一下用户选择一个单词并按下突出显示按钮我的附加组件。然后她又做了几个词的同样的事情。然后,她以更改这些突出显示单词的开始结束索引的方式编辑文档。
此时她按下删除突出显示按钮。我的附加组件应该禁用所有先前选择的单词的突出显示。问题是我不想扫描整个文档并找到任何突出显示的文本。我只想直接访问之前选择的内容。
有没有办法做到这一点?我尝试缓存选定的元素。但是当我从缓存中取回它们时,我得到了TypeError: Cannot find function insertText in object Text.
错误。似乎对象的类型或两者之间发生了变化cache.put()
and 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.
error.
var cache = CacheService.getDocumentCache();
cache.get('text').insertText(0, ':)');
我希望我能清楚地解释我想要实现的目标。