【问题标题】:Is there a way to replace the text inside a TextBox shape while retaining the text formatting?有没有办法在保留文本格式的同时替换 TextBox 形状内的文本?
【发布时间】:2019-10-14 08:08:24
【问题描述】:

我正在尝试替换幻灯片文本框中的文本,同时保留先前文本的文本格式。有没有办法使用谷歌应用脚​​本方法来工作?

我尝试将 Google 幻灯片转换为 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);
        }
      }
    }
  }
}

【问题讨论】:

  • 这看起来很合理。您介意分享您已经尝试过的代码吗?我们应该能够从那里构建。
  • @SourabhChoraria,我修改了我的问题以包括我是如何做到的。

标签: google-apps-script google-slides-api google-slides


【解决方案1】:

您可以通过以下方式操作形状的文本来做到这一点:

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!");

希望这会有所帮助!

【讨论】:

  • 感谢您的回答,但我已经尝试过了。这只会获取第一个单词的文本格式,不会保留同一文本框中其他单词的其他格式。
【解决方案2】:

所以我发现您可以使用函数getRuns() 来隔离格式化文本。希望这可以帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多