基本书写

借助 Google Sheets API,您可以在演示文稿页面上添加和修改元素。本页中的示例展示了如何使用 presentations.batchUpdate 方法执行常见的读取操作。

这些示例使用以下变量:

  • PRESENTATION_ID - 表示您提供演示文稿 ID 的位置。您可以从演示文稿网址中发现此 ID 的值。
  • PAGE_ID - 表示在何处提供页面对象 ID。您可以从网址或使用 API 读取请求检索此 ID 的值。
  • PAGE_ELEMENT_ID - 表示在何处提供页面元素对象 ID。您可以为自己创建的元素指定此 ID(但存在一些限制),也可以允许幻灯片 API 自动创建一个 ID。可以通过 API 读取请求检索元素 ID。

这些示例以 HTTP 请求的形式呈现,与语言无关。如需了解如何使用 Google API 客户端库以不同语言实现批量更新,请参阅添加形状和文本

在幻灯片中添加文本框

以下 presentations.batchUpdate 代码示例展示了如何使用 CreateShapeRequest 方法向 PAGE_ID 指定的幻灯片添加新文本框(包含字符串“My added Text Box”)。在请求正文中指定两个请求:一个用于创建文本框形状(具有给定的大小和位置),另一个用于创建文本框形状。

第一个请求会指定用于文本框的对象 ID。这样,第二个请求就可以在同一个 API 调用中使用此变量,从而减少开销。

以下是向幻灯片添加文本框的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "objectId": PAGE_ELEMENT_ID,
        "shapeType": "TEXT_BOX",
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 150,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    },
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "My Added Text Box",
        "insertionIndex": 0
      }
    }
  ]
}

在幻灯片中添加图片

以下 presentations.batchUpdate 代码示例展示了如何使用 CreateImageRequest 方法将图片添加到 PAGE_ID 指定的幻灯片。API 使用 IMAGE_URL 检索图片。此请求还会缩放图片并将其放在幻灯片中。

以下是将图片添加到幻灯片的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createImage": {
        "url": IMAGE_URL,
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 30,
              "unit": "PT"
            },
            "height": {
              "magnitude": 30,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 200,
            "translateY": 100,
            "unit": "PT"
          }
        }
      }
    }
  ]
}

删除页面或页面元素

以下 presentations.batchUpdate 代码示例展示了如何使用 DeleteObjectRequest 方法,使用两个单独的请求删除 PAGE_ELEMENT_ID 指定的页面元素和 PAGE_ID 指定的幻灯片。

以下是删除页面或页面元素的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "deleteObject": {
        "objectId": PAGE_ELEMENT_ID
      },
      "deleteObject": {
        "objectId":  PAGE_ID
      }
    }
  ]
}

编辑指定形状中的文本

以下 presentations.batchUpdate 代码示例展示了如何使用 DeleteTextRequest 方法替换 PAGE_ELEMENT_ID 所指定形状中的部分文本。为此,请先使用从 0 开始的 startIndex 删除文本,然后在该位置插入新文本。在此示例中,原始文本字符串“My Shape Text: ????”被替换为“My Shape Text: Trapezoid”。

此请求仅影响指定形状中的文本。如需替换演示文稿中所有位置的文本,请使用 ReplaceAllTextRequest 方法。

以下是编辑指定形状中的文本的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "deleteText": {
        "objectId": PAGE_ELEMENT_ID,
        "textRange": {
          "type": "FROM_START_INDEX",
          "startIndex": 15
        }
      }
    },
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "Trapezoid",
        "insertionIndex": 15
      }
    }
  ]
}

将形状标记替换为图片

标记是具有唯一字符串名称(例如“account-holder-name”)的文本框或形状。

以下 presentations.batchUpdate 代码示例展示了如何使用 CreateImageRequest 方法将单个形状标记实例替换为图片,在保持图片的宽高比不变的同时,保持相同的位置并将其缩放以适应标记的尺寸。

此请求还可用于将一张图片替换为另一图片。该请求包含添加新映像,然后删除标记。

CreateImageRequest 方法仅替换指定的形状。如需替换演示文稿中任何位置的标签形状,请使用 ReplaceAllShapesWithImageRequest 方法。

该形状标记具有以下 PageElement 属性(可使用 presentations.pages.get 请求找到):

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 1.13,
    "scaleY": 0.62,
    "translateX": 4800000,
    "translateY":  450000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RECTANGLE"
  }
}

形状位于 PAGE_ID 指定的幻灯片上。为了指定用于替换形状的图片,该 API 会使用 IMAGE_URL 检索该图片。为了保持图片宽高比,同时将其限制在标记的大小范围内,CreateImageRequest 方法会将图片大小设置为标记大小与缩放比例的乘积,并将图片缩放比例设置为 1。如需了解详情,请参阅保持宽高比

以下是将形状标记替换为图片的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createImage": {
        "url": IMAGE_URL,
        "elementProperties": {
          "pageObjectId":  PAGE_ID,
          "size": {
            "width": {
              "magnitude": 3000000 * 1.13,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 3000000 * 0.62,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4800000,
            "translateY": 450000,
            "unit": "PT"
          }
        }
      }
    },
    {
      "deleteObject": {
        "objectId": PAGE_ELEMENT_ID
      }
    }
  ]
}