我正在尝试为将插入一些文字的文档编写Google Apps脚本,然后将插入的文本添加到命名的范围内。为确保插入的文本保存到命名范围,我只想选择插入的文本。
以下是代码:
function insertText() {
var doc = DocumentApp.getActiveDocument();
var docUi = DocumentApp.getUi();
var cursor = doc.getCursor();
if (cursor) {
var insert = cursor.insertText('{insertedtext}');
var rangeBuilder = doc.newRange();
if (insert) {
rangeBuilder.addElement(insert);
} else {
docUi.alert('Cannot insert text here.');
}
} else {
docUi.alert('Cannot find a cursor.');
}
var savedInsert = rangeBuilder.build()
doc.addNamedRange('myInsertedText', savedInsert)
doc.setSelection(doc.getNamedRangeById('myInsertedText').getRange());
}
当我运行脚本时,doc.setSelection(doc.getNamedRangeById('myInsertedText').getRange());
会生成以下错误: TypeError:无法调用null的方法“getRange”。
知道我做错了什么?
谢谢!
答案 0 :(得分:3)
'myInsertedText'
实际上是namedRange的名称,而不是id:
var namedRange = doc.addNamedRange('myInsertedText', savedInsert);
var namedRangeId = namedRange.getId();
doc.setSelection(doc.getNamedRangeById(namedRangeId).getRange());