首页 > 解决方案 > Google 幻灯片 - 中央主模板

问题描述

有谁知道有一个用于谷歌幻灯片演示的中央主模板的方法,该模板自动将更改级联到使用它的演示文稿?

如果不是自动的,那么也许可以使用谷歌应用程序脚本将主模板的任何更改拉到相关的演示文稿中?

这是我正在尝试做的一个简单示例:

  1. 创建带有布局 (L1) 的主模板/主题 (M1),带有两个占位符和一个公司徽标
  2. 使用 Layout L1 创建新的演示文稿 (P1) 导入上面的主题 M1
  3. 用新的公司标志或新的占位符修改主主题 M1 布局 A

如何在不再次手动导入模板/主题的情况下将此更改传播到 P1?如果 P1 可以订阅 M1 中的更改,那将是理想的,但我看不到任何选项,所以想知道我是否可以编写脚本?

提前感谢格雷格

标签: google-apps-scriptgoogle-slides-apigoogle-slides

解决方案


目前这在 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
    // ...
  });
}
  • 如果主演示文稿和子演示文稿都使用相同的主题(即主样式表),则此脚本有效
  • 它的工作原理是在您修改的“主演示文稿”中有一张幻灯片,而子演示文稿也只有一张幻灯片。
  • 它获取样式信息。此脚本获取幻灯片的背景(如果它是实心填充)和每个元素的左上角位置。
  • 然后它用这些信息更新孩子。

这实际上取决于子演示文稿将发生多少变化。如果没有元素会改变,只有有限的样式特征会改变,那么编写一个工作脚本应该不会花费太长时间。它只涉及浏览文档并选择要更新的属性。

如果元素的数量要改变,它们的位置要重新排列,与占位符的内容非常不同,那么它会变得相当复杂。然后它就变成了你可以投入多少小时的函数!尽管希望这是一个很好的起点。

理想情况下,该脚本将添加每个元素的宽度和高度,以配合顶部和左侧位置、它们的旋转、转换、字体、字体颜色、字体字体样式、方向以及对形状的最小支持。有了这些东西,我相信你可以拥有一个相当强大的工具。

参考


推荐阅读