google-apps-script - 是否可以更新/替换特定幻灯片中的文本?
问题描述
是否可以更新/替换特定幻灯片中的文本内容?
示例- 假设我们总共有 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
}
}
谢谢!
解决方案
我相信你的目标如下。
- 您想替换
{{PRODUCT_NAME}}
Google 幻灯片中第三张幻灯片中的文本。 - 您想通过 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]
.
参考:
推荐阅读
- android - Retrofit能否支持Android中同一个api的不同版本
- python-3.x - OPENPYXL For 循环遍历指定列中的每个单元格并将其值替换为大写字母
- python - 具有虚拟环境的 WSGI 应用程序中的 ImportError
- django - 如何与父级一起显示多个相关的外键
- angular - 没有使用 Angular Bootstrap 的 NgbDropdown 提供程序
- r - 时间序列数据分析
- javascript - AngularJS ng-messages在有效输入/缩小后没有隐藏 - 捆绑
- java - Spring WebExceptionHandler 顺序
- python - 在 Python 中安全地覆盖和擦除文件
- rust - 在 Rust 的多个向量中拥有一个结构实例