【问题标题】:How to copy a slide from one presentation to another?如何将幻灯片从一个演示文稿复制到另一个演示文稿?
【发布时间】:2019-08-30 01:34:14
【问题描述】:

我正在尝试从源演示文稿复制幻灯片并将它们附加到目标演示文稿的末尾。我已经在 SO 上搜索了解决方案,但他们使用的是 google apps 脚本。我正在寻找可以使用 google slides 或 google drive REST API 的解决方案。

到目前为止,我尝试的是获取源演示文稿幻灯片的每个元素并使用批量更新将它们添加到目标演示文稿中,但显然这很乏味,并且并不涵盖所有情况。

有没有人有任何可能的方法来完成这项任务?

【问题讨论】:

  • 很遗憾,目前还没有直接将幻灯片复制到其他Google幻灯片的方法(类似于Sheets API的copyTo方法)。因此,为了将幻灯片复制到其他幻灯片,我认为有两种解决方法。 1.通过get方法获取幻灯片中的所有对象和格式后,创建新幻灯片并使用batchUpdate方法放置对象。 2.使用Google Apps Script创建API,因为GAS的幻灯片服务有直接复制幻灯片的方法。我推荐后者,因为我认为前者会是复杂的脚本。
  • 非常感谢您的建议!你应该写一个答案,所以我可以将此问题标记为已回答。
  • 感谢您的回复。我通过包含后一种解决方法的示例脚本来发布答案。你能确认一下吗?如果这不是您想要的结果,我深表歉意。

标签: google-apps-script web-applications google-drive-api google-slides-api


【解决方案1】:

不幸的是,在当前阶段,还没有直接将幻灯片复制到其他 Google 幻灯片的方法(类似于 Sheets API 的 copyTo 方法。)。因此,为了将幻灯片复制到其他幻灯片,我认为有两种解决方法。

  1. 通过 get 方法获取幻灯片中的所有对象和格式后,创建新幻灯片并使用 batchUpdate 方法放置对象。
  2. 使用 Google Apps Script 创建 API,因为 GAS 的幻灯片服务有直接复制幻灯片的方法。

我推荐后者,因为我认为前者会是复杂的脚本。所以我想为后一种解决方法提出一个示例脚本。

当您使用此脚本时,请按以下流程操作。

准备流程

  1. 登录 Google 云端硬盘。 https://drive.google.com/drive/my-drive
  2. 创建新的独立项目。
  3. 设置项目名称并复制粘贴以下示例脚本。
  4. 部署 Web 应用程序。
    1. 在脚本编辑器上,通过“发布”->“部署为 Web 应用”打开一个对话框。
    2. 为“将应用程序执行为:”选择“我”。
    3. 为“谁有权访问应用程序:”选择“任何人,甚至是匿名的”。
    4. 单击“部署”按钮作为新的“项目版本”。
    5. 自动打开“需要授权”对话框。
      1. 点击“查看权限”。
      2. 选择自己的帐户。
      3. 点击“此应用未验证”中的“高级”。
      4. 点击“转到###项目名称###(不安全)”
      5. 点击“允许”按钮。
    6. 复制“当前 Web 应用 URL:”。
      • 就像https://script.google.com/macros/s/#####/exec
    7. 点击“确定”。

通过此流程,Web 应用程序被部署为自己的 API。在此示例中,“谁有权访问应用程序:”的“任何人,甚至匿名”被用作测试。如果您想使用访问令牌,请修改此项。您可以在下面的“参考资料”中查看详细信息。

示例脚本

Google Apps 脚本:

function doGet(e) {
  var srcId = e.parameters.srcId;
  var dstId = e.parameters.dstId;
  var srcPage = e.parameters.srcPage;
  var srcSlide = SlidesApp.openById(srcId);
  var dstSlide = SlidesApp.openById(dstId);
  var copySlide = srcSlide.getSlides()[srcPage - 1];
  dstSlide.appendSlide(copySlide);
  return ContentService.createTextOutput("Done.");
}

卷曲命令:

部署 Web 应用程序后,您可以将 Web 应用程序用作自己的 API。向已部署的 Web 应用请求的示例 curl 如下。

在使用之前,请先设置幻灯片的源文件ID和目标文件ID。当您要复制源幻灯片的第一页时,请将1 设置为srcPage。另外请设置上面检索到的端点。

curl -GL \
  -d "srcId=### fileId of source Slides ###" \
  -d "dstId=### fileId of destination Slides ###" \
  -d "srcPage=1" \
  "https://script.google.com/macros/s/#####/exec"

运行此命令时,将返回 Done.。届时,您可以在目标 Slides 中看到附加到最后一页的幻灯片。

参考文献

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-03-29
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 2022-12-18
  • 1970-01-01
相关资源
最近更新 更多