是否可以更新/替换特定幻灯片中的文本? 修改后的脚本:参考:

问题描述

是否可以更新/替换特定幻灯片中的文本内容

示例 - 假设我们总共有 5 张幻灯片,并且幻灯片 2、3、4 中有 {product_name}。但是我们只需要更新/替换第 3 号幻灯片中的文本 {product_name} 而不是第 2,4 号幻灯片

ReplaceAllText 是可能的,但它会替换找到 {PRODUCT_NAME} 的所有幻灯片,但我们需要更新特定幻灯片的文本,仅假设只有第 3 张幻灯片。我已经探索了很多,但找不到实现相同目标的方法

Snippet for ReplaceAllText (Works for all the slides replace,but we need the same for a specific slide & not for all): -

   requests = [{
      replaceAllText: {
        containsText: {
          text: '{{PRODUCT_NAME}}',matchCase: true
        },replaceText: PRODUCT_NAME
      }
    }

谢谢!

解决方法

我相信你的目标如下。

  • 您想替换 Google 幻灯片中第三张幻灯片中的 {{PRODUCT_NAME}} 文本。
  • 您想使用带有 Google Apps 脚本的 Slides API 的 batchRequest 来实现这一点。

在这种情况下,我认为可以使用 pageObjectIds 的属性。

修改后的脚本:

function myFunction() {
  const PRODUCT_NAME = "sample value"; // Please set your actual value.
  const s = SlidesApp.getActivePresentation(); // or SlidesApp.openById("id")
  const pageElementId = s.getSlides()[2].getObjectId(); // pageElementId of 3rd page.
  console.log(pageElementId)
  const resource = {
    requests: [{
      replaceAllText: {
        pageObjectIds: [pageElementId],replaceText: PRODUCT_NAME,containsText: { matchCase: true,text: "{{PRODUCT_NAME}}" }
      }
    }]
  };
  Slides.Presentations.batchUpdate(resource,s.getId());
}
  • const pageElementId = s.getSlides()[2].getObjectId(); 返回第 3 页的页面元素 ID。这用于 pageObjectIds: [pageElementId]

参考:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...