适用于文档的Google App脚本:插入文本并将其添加到命名范围以供日后检索

时间:2014-06-29 01:10:24

标签: google-apps-script google-docs

我正在尝试为将插入一些文字的文档编写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”。

知道我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

'myInsertedText'实际上是namedRange的名称,而不是id:

  var namedRange = doc.addNamedRange('myInsertedText', savedInsert);
  var namedRangeId = namedRange.getId();
  doc.setSelection(doc.getNamedRangeById(namedRangeId).getRange());