Есть ли способ заменить текст внутри фигуры TextBox, сохранив форматирование текста? - PullRequest
4 голосов
/ 14 октября 2019

Я пытаюсь заменить текст внутри текстового поля слайда, сохраняя форматирование предыдущего текста. Есть ли способ, чтобы это работало с использованием методов сценариев приложений Google?

Я попытался преобразовать Google Slide в PDF, а затем в DOC, чтобы получить значение HTML, чтобы я мог как-то сохранить форматирование текста. Пока преобразования работают, я застрял в той части, где мне нужно заменить текст в TextBox, сохранив исходное форматирование текста.

Пока у меня есть следующее:

function replacePresentationContent(presentationCopyId, slideId, shapeId, content) {
  var presentationCopy = SlidesApp.openById(presentationCopyId);
  var slidesCopy = presentationCopy.getSlides();

  for (var i = 0; i < this.getSlidesCount(presentationCopy); i++) {
    var slideCopy = slidesCopy[i];
    var slidesCopyId = slideCopy.getObjectId();
    var shapesCopy = slideCopy.getShapes();

    if (slidesCopyId === slideId) {
      for (var j = 0; j < shapesCopy.length; j++) {
        if (shapesCopy[j].getObjectId() === shapeId) {
         var textRange = shapesCopy[j].getText();
           textRange.setText(content);
        }
      }
    }
  }
}

Ответы [ 2 ]

3 голосов
/ 31 октября 2019

, поэтому я обнаружил, что вы можете использовать функцию getRuns () , чтобы изолировать форматированный текст. Надеюсь это поможет.

1 голос
/ 14 октября 2019

Вы можете сделать это, манипулируя текстом фигуры следующим образом:

var shape = slide.getShapes()[0]; //Change this to get the Shape you want
shape.getText().setText("The new text you want here, but with the same formatting!");

Надеюсь, это поможет!

...