【问题标题】:How to select from cursor (or selection start) through the end of a Google Docs text document?如何从光标(或选择开始)到 Google Docs 文本文档的结尾进行选择?
【发布时间】:2014-07-20 01:09:16
【问题描述】:

我正在研究如何使用

DocumentApp.getActiveDocument().setSelection(range);

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

(参考:setSelectionDocument

这个issue-post 提供了一个有用的cursor inspector,它清楚地表明选择的“偏移量”是相对于当前段落(或者从技术上讲,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

谢谢。

【问题讨论】:

  • 您的意思是要选择从当前光标位置到整个文档末尾的所有内容?
  • @teatimer 是的。就是这样。

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


【解决方案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 列,则相同:

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

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

就像任何选择一样,似乎:

【讨论】:

  • 请在答案末尾查看我的编辑。这似乎是我需要的开始!谢谢。
  • 如果需要选择,可以使用 getSelection()。 developers.google.com/apps-script/reference/document/…
  • @alliteralmind 我相信如果DocumentApp.getActiveDocument().getSelection(); 是真的,var currentElement = doc.getCursor().getElement(); 会导致异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 2020-10-17
  • 2019-12-28
相关资源
最近更新 更多