Создайте документ Google на основе скриптов API Google - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать Документ Google для API-скрипта.Для большего комфорта я хочу использовать больше шрифтов и написать этот скрипт:

function myTest() {
  var body = DocumentApp.getActiveDocument().getBody();
  var text = body.editAsText();
  body.clear();
  text.setFontSize(10).appendText("Line 01\n");
  text.setFontSize(12).appendText("Line 02\n");
  text.setFontSize(13).appendText("Line 03\n");
  text.setFontSize(14).appendText("Line 04\n");
  text.setFontSize(16).appendText("Line 05\n");
  text.setFontSize(18).appendText("Line 06\n");
  text.setFontSize(20).appendText("Line 07\n");
}

Но это не работает - но почему?У кого-нибудь есть образец сценария для меня?

Спасибо

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Спасибо за ответ.Ваш сценарий работает нормально.

Я новичок, поэтому я изменил ваш сценарий в пошаговом сценарии:

function myTest1() {
  var body = DocumentApp.getActiveDocument().getBody();
  var text = body.editAsText();
  body.clear();

  var tStart = 0;
  text.appendText("Line 01\n");
  tEnde = body.editAsText().getText().length;
  body.editAsText().setFontSize(tStart, tEnde-1, 33);

  tStart = tEnde;
  text.appendText("Line 02\n");
  tEnde = body.editAsText().getText().length;
  body.editAsText().setFontSize(tStart, tEnde-1, 22);

  tStart = tEnde;
  text.appendText("Line 03\n");
  tEnde = body.editAsText().getText().length;
  body.editAsText().setFontSize(tStart, tEnde-1, 11);
}

В настоящее время выполняется сценарий о расположении букв.То, что я ищу, это как скрипт, например:

  • теперь возьмите FontSize 10
  • Напишите текст
  • отныне возьмите FontStyle "Arial" с FontSize 20
  • Напишите текст
  • отныне возьмите FontSize 33
  • Напишите текст
  • отныне возьмите FontSize 10
  • Напишите текст
  • с этого момента возьмите FontStyle "Verdana"
  • Напишите текст
  • .......

Надеюсь, теперь вы, чтоЯ имею в виду.

Спасибо

0 голосов
/ 09 октября 2018

теперь я думаю, что нашел способ, и теперь я могу контролировать цвета, подчеркивание, полужирный, ......

  var body = DocumentApp.getActiveDocument().getBody();
  var text = body.editAsText();
  body.clear();

  var tStart = 0;
  text.appendText("Check01\n\n");

  tEnde = body.editAsText().getText().length;
  body.editAsText().setFontSize(tStart, tEnde-1, 33);
  body.editAsText().setForegroundColor(tStart, tEnde-1, '#2E2EFE');
  body.editAsText().setBackgroundColor(tStart, tEnde-1, '#00FFFF');

  tStart = tEnde;
  text.appendText("Check01\n");
  tEnde = body.editAsText().getText().length;
  body.editAsText().setFontSize(tStart, tEnde-1, 22);
  body.editAsText().setForegroundColor(tStart, tEnde-1, '#00FFFF');
  body.editAsText().setBackgroundColor(tStart, tEnde-1, '#2E2EFE');

Как я могу занять позицию в линии, например, только для одногоЛиния (слева, в центре, справа)?

Спасибо

0 голосов
/ 26 сентября 2018
  • Вы хотите добавить текст, изменив размер шрифта.

Если мое понимание верно, как насчет этого ответа?Я думаю, что при запуске сценария размер шрифта всего добавляемого текста станет равным 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), который был установлен наконец, отражается на всех текстах.

Чтобы избежать этого и отразить размер шрифта для каждого добавляемого текста, как насчет этой модификации?Последовательность измененного сценария выглядит следующим образом.

Поток:

  1. Добавление текста.
  2. Получение длины текста.
  3. Установка шрифтаРазмер диапазона добавляемого текста.

Модифицированный скрипт:

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;
  });
}

Результат:

enter image description here

Другой шаблон:

В вашем скрипте вы используете \n для текста.Поэтому, когда текст добавляется, абзац увеличивается.Вы также можете использовать это.Но это можно использовать только для шаблона, который увеличен в абзаце.Поэтому, пожалуйста, будьте осторожны.

Поток:
  1. Добавление текста.
  2. Получение добавленного абзаца.
  3. Установка размера шрифта для абзаца.
Образецскрипт:
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);
  });
}

Ссылки:

Если я неправильно понял ваш вопрос, пожалуйста, скажите мне.Я хотел бы изменить его.

...