搜索幻灯片并获取页面元素文本

search slide and get page element text

我的脚本搜索演示文稿中的一张特定幻灯片。然后它从第一个页面元素获取文本。这个页面元素是一个只有一个词的形状。在此之后,当我在此页面元素文本前后放置字符串时,文本中出现中断。

function readShapeText() {
   var presentation = SlidesApp.getActivePresentation();
   var slides = presentation.getSlides();
   
   for (i = 0; i < slides.length; i++) {
    
       if(slides[i].getObjectId() == 'mySlideId'){
 
         var pageElement = slides[i].getPageElements()[0].asShape().getText().asString();
          
       }
   }
    
   var myModifiedElement = "My_" + pageElement + "_is_cool";
}

输出是有中断的,但我需要一行:

My_TestElement

_is_cool

如何消除或抑制中断?有没有更好的方法可以在不使用“for 循环”的情况下找到特定的幻灯片 f.e。喜欢 presentation.openSlideById(xxxxxx)?

这些答案怎么样?

Q1:如何消除或抑制中断?

似乎总是给出文本的结尾\n。从 Slides.Presentations.get() 检索到的值也可以看出这一点。所以如果你想检索没有 \n 的值,你可以使用 replace("\n", "").

Q2:有没有更好的方法可以不使用 "for loop" f.e 来查找特定幻灯片。像 presentation.openSlideById(xxxxxx)?

下面的示例脚本怎么样?它使用 filter() 检索了特定的幻灯片,因为 objectId 的键包含在数组中。而且还用了replace("\n", "")

function readShapeText() {
  var mySlideId = "mySlideId"; // Please input this.
  var presentation = SlidesApp.getActivePresentation();
  var slides = presentation.getSlides();
  var slide = slides.filter(function(e){return e.getObjectId() == mySlideId})[0];
  var pageElement = slide.getPageElements()[0].asShape().getText().asString().replace("\n", "");
  var myModifiedElement = "My_" + pageElement + "_is_cool";
  Logger.log(myModifiedElement)
}

如果我误解了你的问题,我很抱歉。