Согласно официальным документам , класс Range
доступен только в том случае, если на странице есть выбор текущего пользователя. Таким образом, вы можете заставить скрипт работать, но он требует некоторого пользовательского ввода, а не запускается на пустом документе.
function getRange() {
var ui = DocumentApp.getUi();
// Get the user selection. Display an alert if there is none.
var selection = DocumentApp.getActiveDocument().getSelection();
if(selection) {
// Get all the elements in the current selection
var elements = selection.getRangeElements();
for( var i=0;i<elements.length;i++) {
var el = elements[i]
// Can it be edited as text? If not, skip it
if(el.getElement().editAsText) {
var start = el.getStartOffset()
var finish = el.getEndOffsetInclusive();
ui.alert("start: " + start + ", finish: " + finish)
} else {
ui.alert("Text not selected!");
}
}
} else {
ui.alert("Nothing is selected!");
}
}
Смещения проверяют позицию выделения относительно последнего элемента. Если это текст, то он вернет индекс. Если нет (например, разрыв страницы или изображение), он вернет -1.
Добавление простого события onOpen
позволит вам запустить скрипт из пользовательского меню для тестирования:
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu("Offsets").addItem("Run", "getRange").addToUi()
}