【问题标题】:Copy one slide from Google Slides into a new presentation using API使用 API 将 Google 幻灯片中的一张幻灯片复制到新的演示文稿中
【发布时间】:2015-11-03 08:53:39
【问题描述】:

我希望使用Google Drive API 创建新的 Google 幻灯片,但其中一张幻灯片是从另一个以前的演示文稿中复制的。

我的问题是,是否可以构建一个新的 Google 幻灯片并将幻灯片(单独)插入到新的幻灯片中。

或者是否可以从 Google 演示文稿中删除幻灯片?

【问题讨论】:

  • 您不能以编程方式编辑 Google 演示文稿
  • 自 2016 年 11 月起,您现在可以以编程方式对 Google 幻灯片演示文稿进行 CRUD。根据操作的不同,您可以使用 Google Slides API(文档操作)或 Google Drive API(基于文件的操作)或同时使用两者。另见developers.googleblog.com/2016/11/introducing-google-slides-api.html

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


【解决方案1】:

虽然不完美,但您可以使用新的Google Slides API 接近。您可以从源演示文稿中读取幻灯片,然后尝试将其复制到目标演示文稿中。目前,API 并不支持所有 Slides 功能,因此过程中可能会丢失一些信息。

【讨论】:

    【解决方案2】:

    (2017 年 2 月) 自 2016 年 11 月起,使用 release 和 Google Slides API,现在可以替代 OP 要求的解决方案,尽管不是直接使用 API。该解决方法是您要复制的一张幻灯片位于其自己的独立文件中。然后,您可以使用 两个 Google API 来实现这一目标:Slides API(用于执行 文档 级别的功能,例如添加新幻灯片)以及 Google Drive API (用于面向文件的访问,例如复制)。

    听起来你正在使用Google APIs Client Library for Ruby,所以你已经设置好了。下一步是在 Google Developers Console 中创建一个启用 Google Drive 和 Google Slides API 的项目,然后在创建 OAuth2 凭据后下载 client_secret*.json 文件。

    为了帮助您入门,这里是Ruby quickstart sample for the Drive API,这里是Ruby quickstart for the Slides API。如果您对 Python 没有“过敏”(如果您是,请假装它是伪代码;)),我已经制作了 several videos,其中包含更多“真实世界”的使用 Slides API 的示例,您可以从中学习并迁移到Ruby 如果需要。

    下面是另一个 Python 示例,您可以将它移植到 Ruby,它完全按照 OP 的要求执行操作,假设您的模板文件是 SLIDE_TEMPLATE_FILE,DRIVE 是您的 Drive API 服务端点,SLIDES 是幻灯片 API。如果有人给我发了一个 Ruby 端口,我会用它来更新这个答案。

    # query for template file with one slide
    TMPLFILE = SLIDE_TEMPLATE_FILE
    rsp = DRIVE.files().list(q="name='%s'" % TMPLFILE).execute().get('files')[0]
    
    # copy template file
    DATA = {'name': 'Google Drive & Slides API template DEMO'}
    DECK_ID = DRIVE.files().copy(body=DATA, fileId=rsp['id']).execute().get('id')
    
    # create 2 more (1 title-only & 1 blank) slides in copied file
    reqs = [
        {'createSlide': {'slideLayoutReference': {'predefinedLayout': 'TITLE_ONLY'}}},
        {'createSlide': {'slideLayoutReference': {'predefinedLayout': 'BLANK'}}},
    ]
    SLIDES.presentations().batchUpdate(body={'requests': reqs},
            presentationId=DECK_ID).execute()
    

    最后,是的,您还可以使用 deleteObject request 从演示文稿中删除幻灯片,并传入您要删除的幻灯片/页面的 ID。如果您无法隔离一张幻灯片,另一种解决方法是:复制整个演示文稿并删除除一张幻灯片之外的所有页面,然后开始添加新幻灯片。希望 API 最终会得到“正确的解决方案”,这样我们就不必玩这些游戏了。

    【讨论】:

      【解决方案3】:

      无法通过 API 执行此完整操作。 虽然,我们可以create 新的或copy 现有的 Google 演示文稿。 或者,我们可以通过ctrl+c 一张幻灯片和ctrl+v 进入另一张幻灯片的浏览器交互来做到这一点。

      【讨论】:

      • 自 2016 年 11 月起,您现在可以以编程方式对 Google 幻灯片演示文稿进行 CRUD。根据操作的不同,您可以使用 Google Slides API(文档操作)或 Google Drive API(基于文件的操作)或同时使用两者。另见developers.googleblog.com/2016/11/introducing-google-slides-api.html
      猜你喜欢
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 2019-11-04
      • 1970-01-01
      • 2014-10-19
      • 2021-06-02
      相关资源
      最近更新 更多