如何在Google Apps Script中清除Google Docs的文本选区
在Google Apps Script中取消文档选区的解决方案
先贴一段我目前能正常运行的选区代码,用来选中指定文本范围:
const editingRange = body.findText(needle); if (editingRange) { const range = doc.newRange(); range.addElement(editingRange.getElement().asText(), editingRange.getStartOffset(), editingRange.getEndOffsetInclusive()) doc.setSelection(range.build()) }
现在需要实现取消选区的效果(就像用户点击文档空白处那样),但试了两种方法都报错:
第一种尝试:
doc.setSelection(null);报错提示:
argument range cannot be null第二种尝试:
doc.setSelection(doc.newRange().build());报错提示:
Exception: Invalid argument: range at clearSelection7(argh:473:9)
查了官方文档也没找到明确方案,只注意到getSelection在无选区时返回null,但setSelection根本不接受null参数。
可行的解决方法
通过设置光标到文档的某个位置(比如开头),就能自动清除当前选区,实现点击空白处的效果:
// 将光标定位到文档正文的起始位置,取消选区 doc.setCursor(doc.getBody(), 0);
如果文档开头有内容,也可以把光标定位到某个段落的末尾:
const firstPara = doc.getBody().getParagraphs()[0]; doc.setCursor(firstPara, firstPara.getText().length);
原理是:当你设置光标位置时,Google Docs会自动清除现有的文本选区,达到我们需要的取消选中效果。
内容的提问来源于stack exchange,提问作者unhammer
相关产品推荐
相关产品推荐

