是否可以将形状从一张幻灯片移动到另一张幻灯片?

Is it possible to move a Shape from a slide to another?

我在 NodeJS 服务器上使用 Google 幻灯片 API 来编辑演示文稿,但我在文档中找不到有关将对象移动到另一张幻灯片(例如 Shape)的任何内容。

答案:

你必须通过从 presentations.pages.get 的响应中获取形状,删除它,然后用 presentations.batchUpdate.[=39 插入它来做到这一点=]

更多信息:

为了 'move' 使用 API 从一张幻灯片到另一张幻灯片的对象,您实际上必须发出两个请求:一个是删除当前对象,另一个是将其插入新幻灯片。

首先,您需要向 presentations.pages.get 发出请求以获取页面中的所有 PageElement 对象。根据 documentation,Shape 是 PageElement 对象的实例,表示幻灯片上的形状。

presentations.pages.get 的响应将是 Page resource:

{
  "objectId": string,
  "pageType": enum (PageType),
  "pageElements": [
    {
      object (PageElement)
    }
  ],
  "revisionId": string,
  "pageProperties": {
    object (PageProperties)
  },

  // Union field properties can be only one of the following:
  "slideProperties": {
    object (SlideProperties)
  },
  "layoutProperties": {
    object (LayoutProperties)
  },
  "notesProperties": {
    object (NotesProperties)
  },
  "masterProperties": {
    object (MasterProperties)
  }
}

Shape 将包含在此请求的 response['pageElements'] 资源中,其形式为:

{
  "objectId": string,
  "size": {
    object (Size)
  },
  "transform": {
    object (AffineTransform)
  },
  "title": string,
  "description": string,

  // Union field element_kind can be only one of the following:
  "elementGroup": {
    object (Group)
  },
  "shape": {
    "shapeType": enum (Type),
    "text": {
      object (TextContent)
    },
    "shapeProperties": {
      object (ShapeProperties)
    },
    "placeholder": {
      object (Placeholder)
    }
  },
}

presentations.pages.get 获得的响应中获取 Shape 对象后,您将需要从检索到的属性中创建一个 CreateShapeRequest

{
  "objectId": string,
  "elementProperties": {
    object (PageElementProperties)
  },
  "shapeType": enum (Type)
}

还有一个 DeleteObjectRequest 可用于删除上一张幻灯片中的形状:

{
  "objectId": string
}

DeleteObjectRequestCreateShapeRequest 可以包含在同一个 batchUpdate 请求中。请求正文应采用以下形式:

{
  "requests": [
    {
      object (Request)
    }
  ],
  "writeControl": {
    object (WriteControl)
  }
}

可以查看 batchUpdate 方法的完整文档 here

参考文献: