【问题标题】:How to replace Text with Image on Google Slide using Google Script如何使用谷歌脚本在谷歌幻灯片上用图像替换文本
【发布时间】:2021-05-30 10:48:45
【问题描述】:

如何使用谷歌脚本而不是谷歌脚本 API 获得相同的结果。我正在尝试使用 Google Script 用 Google 幻灯片上的图像替换文本。提前谢谢你...

function insertImageCentered()
{
  var presentation = SlidesApp.getActivePresentation();
  
  var requests = [{
    "replaceAllShapesWithImage": {
      "imageUrl": "https://docs.google.com/drawings/d/e/2PACX-1vR5mi6ujksb_2WtTFmk39IPYBIBlJ6WkzM1nsys9cT4Wquik627DDIRXzoYTgHPKX3fcvJzG9inDmJt/pub?w=960&h=720",
        "imageReplaceMethod": "CENTER_INSIDE",
        "pageObjectIds": [presentation.getSlides()[0].getObjectId()],
        "containsText": {
          "text": "{{CENTERED_SHAPE}}",
          "matchCase": false
        }
     }
   }];
  
   Slides.Presentations.batchUpdate({'requests': requests}, presentation.getId());
}

【问题讨论】:

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


    【解决方案1】:

    我相信你的目标如下。

    • 您希望将使用 Google Slides API 的脚本转换为使用 Slides Service 的脚本,而不使用 Slides API。
      • 来自How do I get the same result using google Script, not with the Google Script API.,我了解到您认为Google Script API 可能是指Google Slides API。至此,我认为您的目标与上述类似。

    在这种情况下,我认为可以使用replaceWithImage的方法。使用此方法时,脚本变为如下。

    示例脚本:

    请将以下脚本复制并粘贴到 Google 幻灯片的脚本编辑器中。还有,请运行myFunction的功能。

    function myFunction() {
      var searchText = "{{CENTERED_SHAPE}}";
      var imageUrl = "https://docs.google.com/drawings/d/e/2PACX-1vR5mi6ujksb_2WtTFmk39IPYBIBlJ6WkzM1nsys9cT4Wquik627DDIRXzoYTgHPKX3fcvJzG9inDmJt/pub?w=960&h=720";
    
      // 1. Retrieve 1st slide.
      var presentation = SlidesApp.getActivePresentation();
      var slide = presentation.getSlides()[0];
    
      // 2. Replace the shape which has the text of "searchText" with the image of "imageUrl".
      slide.getShapes().forEach(s => {
        if (s.getText().asString().toLocaleUpperCase().includes(searchText.toLocaleUpperCase())) {
          s.replaceWithImage(imageUrl);
        }
      });
    }
    
    • 在您的脚本中,使用了"matchCase": false。在上面的脚本中,我为此使用了if (s.getText().asString().toLocaleUpperCase().includes(searchText.toLocaleUpperCase())) {。当你想使用"matchCase": true时,请修改为if (s.getText().asString().includes(searchText)) {
    • 另外,如果你想用图片替换只有{{CENTERED_SHAPE}}文字的形状,请修改为if (s.getText().asString().trim() == searchText) {

    参考:

    【讨论】:

    • 感谢@Tanaike 的快速回复。根据我的需要,你是什么意思。上面的代码有效。但是我发现了一个新问题。 1. 我使用的幻灯片不止一张 2. 图片出现在左上角。有没有办法设置图片的位置?
    • @Learn Apps 脚本 感谢您的回复。我很高兴你的问题得到了解决。我愿意支持你。但是回复的问题是新问题,和你的问题不同。那么您可以将其发布为新问题吗?因为当您的初始问题被评论更改时,看到您的问题的其他用户会感到困惑。通过将其发布为新问题,包括我在内的用户都可以想到它。当时,please close this question。如果你能合作解决你的新问题,我很高兴。你能合作解决你的新问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多