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

时间:2019-04-08 20:27:27

标签: google-drive-api google-slides-api

我正在尝试从源演示文稿中复制幻灯片,并将其附加到目标演示文稿的末尾。我已经在SO上搜索了解决方案,但他们使用了Google Apps脚本。我正在寻找可以使用Google幻灯片或Google Drive REST API的解决方案。到目前为止,我一直在尝试获取源演示文稿幻灯片的每个元素,并使用批处理更新将它们添加到目标演示文稿中,但这显然很繁琐,并且不能涵盖所有情况。有没有人有可能执行此任务的方法?预先感谢。

1 个答案:

答案 0 :(得分:2)

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

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

我建议使用后者,因为我认为前者将是复杂的脚本。因此,我想为后一种解决方法提出一个示例脚本。

使用此脚本时,请执行以下流程。

准备流程

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

通过此流程,将Web Apps部署为自己的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.");
}

curl命令:

在部署Web Apps之后,您可以将Web Apps用作自己的API。请求到已部署的Web Apps的示例curl如下。

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

参考