Давайте рассмотрим несколько основных операций идентификации: вручную и по сценарию.На следующем рисунке показано, как сделать отступ для текущего абзаца (курсор остается внутри него).
Обратите внимание, что единицы измерения - это сантиметры.Также обратите внимание, что в абзаце нет начальных пробелов или табуляций, они нам не нужны.
Предположим, мы хотим получить значения отступа в сценарии и применить их к следующему абзацу.Посмотрите на код ниже:
function myFunction() {
var ps = DocumentApp.getActiveDocument().getBody().getParagraphs();
// We work with the 5-th and 6-th paragraphs indeed
var iFirst = ps[5].getIndentFirstLine();
var iStart = ps[5].getIndentStart();
var iEnd = ps[5].getIndentEnd();
Logger.log([iFirst, iStart, iEnd]);
ps[6].setIndentFirstLine(iFirst);
ps[6].setIndentStart(iStart);
ps[6].setIndentEnd(iEnd);
}
Если вы запустите и посмотрите журнал, вы увидите что-то вроде этого: [92.69291338582678, 64.34645669291339, 14.173228346456694]
.Не удивительно, у нас есть типографские точки вместо сантиметров .(1cm = 28.3465pt) Таким образом, мы можем точно измерить и изменить любые значения отступа абзаца.
Добавление
По некоторым причинам вы можете захотеть контролировать число пробелов в началеабзаца.Это также возможно с помощью сценариев, но это не влияет на «левый» или «правый» абзацы абзаца.
Пример кода ниже для аналогичной задачи: подсчитать число пробелов в 5-м абзаце и сделатьтакое же количество пробелов в начале следующего.
function mySpaces() {
var ps = DocumentApp.getActiveDocument().getBody().getParagraphs();
// We work with the 5-th and 6-th paragraphs indeed
var spacesCount = getLeadingSpacesCount(ps[5]);
Logger.log(spacesCount);
var diff = getLeadingSpacesCount(ps[6]) - spacesCount;
if (diff > 0) {
ps[6].editAsText().deleteText(0, diff - 1);
} else if (diff < 0) {
var s = Array(1 - diff).join(' ');
ps[6].editAsText().insertText(0, s);
}
}
function getLeadingSpacesCount(p) {
var found = p.findText("^ +");
return found ? found.getEndOffsetInclusive() + 1 : 0;
}
Мы использовали методы deleteText () и insertText () класса Text для правильных исправлений и findText() , чтобы найти пробелы, если таковые имеются.Обратите внимание, что последний аргумент метода - это строка, представляющая регулярное выражение.Соответствует «всем ведущим пробелам», если они существуют.См. подробнее о синтаксисе регулярных выражений.