如何从光标(或选择开始)到Google Docs文本文档的末尾进行选择?

时间:2014-07-20 01:09:16

标签: javascript google-apps-script google-docs

我正在试图弄清楚如何使用

DocumentApp.getActiveDocument().setSelection(range);

在Google文档文档文档中,从当前光标位置(或选择的开头)到结尾选择所有文本,但我不明白如何创建必要的Range对象来做此

(参考文献:setSelectionDocument

这个cursor inspector提供了一个有用的issue-post,它清楚地表明选择的“偏移”是相对于当前段落(或技术上, Element)它在。所以如果选择是列表元素3中的前五个字符,那么它的偏移量是0和4,在它之前或之后没有元素(段落)的真实上下文。

inspector screenshot

在文档末尾选择(我在列表后添加了一些空段落):

inspector screenshot

我发现最接近的是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,并以“文档结束”结束?

谢谢。

1 个答案:

答案 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我正在使用的。我在下面做了一些诊断。我希望它有所帮助。

(原谅这个回复的编辑。这不是编辑答案的目的,但是评论的信息太多。完成后请随意删除。)


光标位于最顶部,它可以工作:

screenshot

如果光标位于中间的空行,位于第0列,则相同:

screenshot

如果光标位于文档中的第一个和第二个字符之间,则在运行命令时,它只选择当前段落:

screenshot

选择文档中的第一个字符会导致错误:

screenshot

与任何选择一样,似乎:

screenshot