google-apps-script - Google 幻灯片 - 中央主模板
问题描述
有谁知道有一个用于谷歌幻灯片演示的中央主模板的方法,该模板自动将更改级联到使用它的演示文稿?
如果不是自动的,那么也许可以使用谷歌应用程序脚本将主模板的任何更改拉到相关的演示文稿中?
这是我正在尝试做的一个简单示例:
- 创建带有布局 (L1) 的主模板/主题 (M1),带有两个占位符和一个公司徽标
- 使用 Layout L1 创建新的演示文稿 (P1) 导入上面的主题 M1
- 用新的公司标志或新的占位符修改主主题 M1 布局 A
如何在不再次手动导入模板/主题的情况下将此更改传播到 P1?如果 P1 可以订阅 M1 中的更改,那将是理想的,但我看不到任何选项,所以想知道我是否可以编写脚本?
提前感谢格雷格
解决方案
目前这在 Apps 脚本中是不可能的
在问题跟踪器中有一个功能请求,去给它一个☆!
https://issuetracker.google.com/issues/129457735
也许也去解释一下你的用例。
可能的解决方法
我能想到的最好的解决方法是这个脚本的内容:
function copyStyling() {
// This is a standalone script
let masterID = "1107dQEIAbZ8ipBi0wvU6cdy4OV7N2hURT5fjgOwm_vY";
let childID = "1XvGARRBzXofsjrFJkl8SCmt3tQJ2nkw1n9MG3tr9fhU";
// Master Slide Variables
let masterPresentation = SlidesApp.openById(masterID);
let masterSlide = masterPresentation.getSlides()[0];
let masterElements = masterSlide.getPageElements();
// Get style elements
let masterBackground = masterSlide.getBackground();
let masterSolidFill = masterBackground.getSolidFill().getColor();
// etc
// ...
// Child Slide Variables
let childPresentation = SlidesApp.openById(childID);
let childSlide = childPresentation.getSlides()[0];
let childElements = childSlide.getPageElements();
// Updating the stylings for the page
let childBackground = childSlide.getBackground();
childBackground.setSolidFill(masterSolidFill);
// etc
// ...
// Updating the stylings for each element on the page
masterElements.forEach((element, i) => {
childElements[i].setLeft(element.getLeft());
childElements[i].setTop(element.getTop());
// etc
// ...
});
}
- 如果主演示文稿和子演示文稿都使用相同的主题(即主样式表),则此脚本有效
- 它的工作原理是在您修改的“主演示文稿”中有一张幻灯片,而子演示文稿也只有一张幻灯片。
- 它获取样式信息。此脚本获取幻灯片的背景(如果它是实心填充)和每个元素的左上角位置。
- 然后它用这些信息更新孩子。
这实际上取决于子演示文稿将发生多少变化。如果没有元素会改变,只有有限的样式特征会改变,那么编写一个工作脚本应该不会花费太长时间。它只涉及浏览文档并选择要更新的属性。
如果元素的数量要改变,它们的位置要重新排列,与占位符的内容非常不同,那么它会变得相当复杂。然后它就变成了你可以投入多少小时的函数!尽管希望这是一个很好的起点。
理想情况下,该脚本将添加每个元素的宽度和高度,以配合顶部和左侧位置、它们的旋转、转换、字体、字体颜色、字体字体样式、方向以及对形状的最小支持。有了这些东西,我相信你可以拥有一个相当强大的工具。
参考
推荐阅读
- react-native - 如何从错误中找到标签:尝试在 React Native Android 中使用标签 85273 更新不存在的视图
- python - 如何根据新字典中列表值强加的标准对字典的值进行排序?
- python - 如何在看板视图 Odoo10 中显示静态值?
- c - 新 gcc 编译器的警告
- python - 根据Python中项目子集的顺序对列表进行排序
- node.js - mongodb $sum 只有正数
- python-3.x - 在多列上使用 str() 方法的数据框
- sql-server - 如何更新 SQL Server 中的父字段
- mongodb - 如何从 mongodb 返回值的通量中返回列表
- java - 安装插件 Gradle 后 Eclipse 2020-06-R 未启动