我正在试图弄清楚如何使用
DocumentApp.getActiveDocument().setSelection(range);
在Google文档文档文档中,从当前光标位置(或选择的开头)到结尾选择所有文本,但我不明白如何创建必要的Range
对象来做此
(参考文献:setSelection
,Document
)
这个cursor inspector提供了一个有用的issue-post,它清楚地表明选择的“偏移”是相对于当前段落(或技术上, Element
)它在。所以如果选择是列表元素3中的前五个字符,那么它的偏移量是0和4,在它之前或之后没有元素(段落)的真实上下文。
在文档末尾选择(我在列表后添加了一些空段落):
我发现最接近的是this example,它增加了选择以包含文档中的每个表。
// Change the user's selection to a range that includes every table in the document.
var doc = DocumentApp.getActiveDocument();
var rangeBuilder = doc.newRange();
var tables = doc.getBody().getTables();
for (var i = 0; i < tables.length; i++) {
rangeBuilder.addElement(tables[i]);
}
doc.setSelection(rangeBuilder.build());
那么,你如何使用RangeBuilder
创建一个以“当前光标位置”(或当前选择的开头)开头的Range
,并以“文档结束”结束?
谢谢。
答案 0 :(得分:1)
试试这个
var doc = DocumentApp.getActiveDocument();
var rangeBuilder = doc.newRange();
var currentElement = doc.getCursor().getElement();
rangeBuilder.addElement(currentElement);
var sibling = currentElement.getNextSibling();
while (sibling !== null) {
rangeBuilder.addElement(sibling);
sibling = sibling.getNextSibling();
}
doc.setSelection(rangeBuilder.build());
@teatimer,
您的回答似乎正确!这是the document我正在使用的。我在下面做了一些诊断。我希望它有所帮助。
(原谅这个回复的编辑。这不是编辑答案的目的,但是评论的信息太多。完成后请随意删除。)
光标位于最顶部,它可以工作:
如果光标位于中间的空行,位于第0列,则相同:
如果光标位于文档中的第一个和第二个字符之间,则在运行命令时,它只选择当前段落:
选择文档中的第一个字符会导致错误:
与任何选择一样,似乎: