首页 > 解决方案 > AppsScript 搜索文本和更改颜色

问题描述

我很难找到这样的代码:在谷歌幻灯片演示中,搜索所有“[名称]”,然后将它们的颜色更改为红色。

我从以下三行开始,有什么帮助吗?

  var currentslides = SlidesApp.getActivePresentation();
  var slides = currentslides.getSlides();
  var gettext = slides.getText();

谢谢!

标签: google-apps-script

解决方案


Presentation.getSlides()返回一个数组/幻灯片列表。幻灯片类没有getText()方法。如果要获取幻灯片中的文本,可以使用Slide.getShapes()从Shape 类中获取。

示例代码:

function myFunction() {
  var currentslides = SlidesApp.getActivePresentation();
  var slides = currentslides.getSlides();

  //Check each slides
  slides.forEach(slide => {
    Logger.log("**slide**");
    
    //Get all shapes in the current slide
    slide.getShapes().forEach(shape => {

      //Get text in the current shape
      var text = shape.getText();
      Logger.log(text.asString());

      //Search for the string "[Name]"
      var str = text.find("\\[Name\\]");
      str.forEach(s => {
        //Change its foreground color to red "#rrggbb"
        s.getTextStyle().setForegroundColor("#ff0000");

      });
    })
  });
  
}

它能做什么?

  1. 使用Presentation.getSlides()获取当前演示文稿中的所有幻灯片
  2. 循环所有幻灯片,使用Slide.getShapes()获取当前幻灯片中可用的所有形状
  3. 循环所有形状,使用Shape.getText()获取每个形状的文本,这将返回一个TextRange 类
  4. 使用TextRange.find(pattern)"[Name]"在文本范围内查找字符串,这将返回与您的模式匹配的TextRange 类的数组/列表
  5. 循环所有文本范围,使用TextRange.getTextStyle()获取其文本样式,这将返回一个TextStyle Class"#ff0000"使用TextStyle.setForegroundColor(foregroundColor)将其前景色更改为红色

输出:

前:

在此处输入图像描述

后:

在此处输入图像描述

附加参考:


推荐阅读