- Вы хотите добавить текст, изменив размер шрифта.
Если мое понимание верно, как насчет этого ответа?Я думаю, что при запуске сценария размер шрифта всего добавляемого текста станет равным 20. Используя следующий сценарий, вы можете подтвердить эту причину.
var body = DocumentApp.getActiveDocument().getBody();
var text = body.editAsText();
body.clear();
var t1 = text.appendText("Line 01\n");
Logger.log(JSON.stringify(t1.getText()))
var t2 = text.appendText("Line 02\n");
Logger.log(JSON.stringify(t2.getText()))
Logger.log(JSON.stringify(t1.getText()))
и Logger.log(JSON.stringify(t2.getText()))
- Line 01\n
и Line 01\nLine 02\n
.Это означает, что в вашем скрипте размер шрифта всех текстов меняется каждый раз.Таким образом, когда ваш скрипт запускается, setFontSize(20)
, который был установлен наконец, отражается на всех текстах.
Чтобы избежать этого и отразить размер шрифта для каждого добавляемого текста, как насчет этой модификации?Последовательность измененного сценария выглядит следующим образом.
Поток:
- Добавление текста.
- Получение длины текста.
- Установка шрифтаРазмер диапазона добавляемого текста.
Модифицированный скрипт:
function myTest() {
var body = DocumentApp.getActiveDocument().getBody();
var text = body.editAsText();
body.clear();
var obj = [
{text: "Line 01\n", font: 10},
{text: "Line 02\n", font: 12},
{text: "Line 03\n", font: 13},
{text: "Line 04\n", font: 14},
{text: "Line 05\n", font: 16},
{text: "Line 06\n", font: 18},
{text: "Line 07\n", font: 20},
];
var offset = 0;
obj.forEach(function(e) {
var t = text.appendText(e.text);
var tLen = t.getText().length;
t.setFontSize(offset, tLen - 1, e.font);
offset = tLen;
});
}
Результат:
Другой шаблон:
В вашем скрипте вы используете \n
для текста.Поэтому, когда текст добавляется, абзац увеличивается.Вы также можете использовать это.Но это можно использовать только для шаблона, который увеличен в абзаце.Поэтому, пожалуйста, будьте осторожны.
Поток:
- Добавление текста.
- Получение добавленного абзаца.
- Установка размера шрифта для абзаца.
Образецскрипт:
function myTest2() {
var body = DocumentApp.getActiveDocument().getBody();
var text = body.editAsText();
body.clear();
var obj = [
{text: "Line 01\n", font: 10},
{text: "Line 02\n", font: 12},
{text: "Line 03\n", font: 13},
{text: "Line 04\n", font: 14},
{text: "Line 05\n", font: 16},
{text: "Line 06\n", font: 18},
{text: "Line 07\n", font: 20},
];
obj.forEach(function(e) {
text.appendText(e.text);
var p = body.getParagraphs();
p[p.length - 2].editAsText().setFontSize(e.font);
});
}
Ссылки:
Если я неправильно понял ваш вопрос, пожалуйста, скажите мне.Я хотел бы изменить его.