将幻灯片从一个Google演示文稿复制到另一个

问题描述 投票:1回答:1

我正在尝试从源演示文稿中复制幻灯片并将它们附加到目标演示文稿的末尾。我在SO上搜索了解决方案,但他们使用谷歌应用程序脚本。我正在寻找可以使用谷歌幻灯片或谷歌驱动器REST API的解决方案。到目前为止,我所尝试的是获取源演示文稿幻灯片的每个元素,并使用批量更新将它们添加到目标演示文稿,但显然这很乏味,并不涵盖所有情况。有没有人有任何可能的方法来执行此任务?提前致谢。

google-drive-sdk google-slides-api
1个回答
2
投票

不幸的是,在目前的阶段,还没有方法可以直接复制幻灯片(就像Sheets API的copyTo方法一样)到其他Google幻灯片。因此,为了将幻灯片复制到其他幻灯片,我认为有2个解决方法。

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

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

使用此脚本时,请执行以下操作。

准备流程

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

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

示例脚本

Google Apps Script:

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.");
}

curl command:

部署Web应用程序后,您可以将Web Apps用作自己的API。请求部署的Web Apps的样本卷曲如下。

在使用它之前,请设置幻灯片的源和目标文件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.。此时,您可以看到附加的幻灯片到目标幻灯片的最后一页。

参考

© www.soinside.com 2019 - 2024. All rights reserved.