元素操作

您可以使用 Google 幻灯片 API 创建和修改 PageElement 资源,包括文本框、图片、表格、基本形状、线条和嵌入式视频。本页上的示例演示了使用 presentations.batchUpdate 方法的一些常见页面元素操作。

这些示例使用以下变量:

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

为了确保不考虑语言,这些示例以 HTTP 请求的形式呈现。如需了解如何使用 Google API 客户端库实现不同语言的批量更新,请参阅以下指南:

向文本框添加项目符号列表

以下 presentations.batchUpdate 代码示例展示了如何使用 InsertTextRequest 方法将文本插入由 PAGE_ELEMENT_ID 指定的空文本框中。然后,该示例使用 CreateParagraphBulletsRequest 方法将所有文本框文本转换为项目符号列表。列表中的项由 \n 字符分隔,而缩进由 \t 字符控制。

以下是创建演示文稿的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "My List\n\tItem 1\n\t\tItem 2\n\t\t\tItem 3",
        "insertionIndex": 0
      },
      "createParagraphBullets": {
        "objectId": PAGE_ELEMENT_ID,
        "bulletPreset": "BULLET_ARROW_DIAMOND_DISC",
        "textRange": {
          "type": "ALL"
        }
      }
    }
  ]
}

此请求可以创建一个如下所示的项目符号列表:

项目符号列表配方结果。

在幻灯片中添加形状

以下 presentations.batchUpdate 代码示例展示了如何使用 CreateShapeRequest 方法向 PAGE_ID 指定的幻灯片添加波浪形状。此请求会指定形状类型,然后调整形状比例并将其置于幻灯片中。然后使用 InsertTextRequest 方法向该形状添加文本。该请求将线路的 ID 设置为 PAGE_ELEMENT_ID

以下是向幻灯片添加形状的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "objectId": PAGE_ELEMENT_ID,
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 3000000,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 3000000,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 0.6807,
            "scaleY": 0.4585,
            "translateX": 6583050,
            "translateY": 1673950,
            "unit": "EMU"
          }
        },
        "shapeType": "WAVE"
      }
    },
    {
      "insertText": {
        "objectId": PAGE_ELEMENT_ID,
        "text": "My Wave Shape",
        "insertionIndex": 0
      }
    }
  ]
}

在幻灯片中添加视频

以下 presentations.batchUpdate 代码示例展示了如何使用 CreateVideoRequest 方法将视频嵌入到由 PAGE_ID 指定的幻灯片中。此请求会缩放视频并将其放在幻灯片中,并将视频的 ID 设置为 PAGE_ELEMENT_ID。源视频的唯一标识符设置为 VIDEO_ID。例如,位于 https://www.youtube.com/watch?v=7U3axjORYZ0 的 YouTube 视频的 ID 为 7U3axjORYZ0

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

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createVideo": {
        "objectId": PAGE_ELEMENT_ID,
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 12000,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 9000,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 381,
            "scaleY": 381,
            "translateX": 152400,
            "translateY": 152400,
            "unit": "EMU"
          }
        },
        "source": "YOUTUBE",
        "id": VIDEO_ID
      }
    }
  ]
}

复制和修改元素

以下 presentations.batchUpdate 代码示例展示了如何使用 DuplicateObjectRequest 方法获取现有形状(由 PAGE_ELEMENT_ID 指定)并制作副本(由 COPY_ELEMENT_ID 指定)。

然后,后续请求对重复对象进行以下更改:

  • 将背景颜色设为 LIGHT2 主题颜色。
  • 将副本(从原始形状的位置)向页面下方移动。
  • 将文本字体设置为 18-pt 佐治亚州。
  • 修改文本,使其显示为“My Shape Copy”。

此处的请求使用字段掩码保留未更改的形状属性(例如轮廓样式)。使用字段掩码也可以提高性能。

如需详细了解如何复制幻灯片,请参阅复制幻灯片示例。

以下是复制和修改元素的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "duplicateObject": {
        "objectId": PAGE_ELEMENT_ID,
        "objectIds": {
          PAGE_ELEMENT_ID: COPY_ELEMENT_ID
        }
      }
    },
    {
      "updateShapeProperties": {
        "objectId": COPY_ELEMENT_ID,
        "fields": "shapeBackgroundFill.solidFill.color",
        "shapeProperties": {
          "shapeBackgroundFill": {
            "solidFill": {
              "color": {
                "themeColor": "LIGHT2"
              }
            }
          }
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": COPY_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
          "scaleX": 1,
          "scaleY": 1,
          "translateX": 0,
          "translateY": 1250000,
          "unit": "EMU"
        }
      }
    },
    {
      "updateTextStyle": {
        "objectId": COPY_ELEMENT_ID,
        "fields": "fontFamily,fontSize",
        "textRange": {
          "type": "ALL"
        },
        "style": {
          "fontFamily": "Georgia",
          "fontSize": {
            "magnitude": 18,
            "unit": "PT"
          }
        }
      }
    },
    {
      "deleteText": {
        "objectId": COPY_ELEMENT_ID,
        "textRange": {
          "type": "ALL"
        }
      }
    },
    {
      "insertText": {
        "objectId": COPY_ELEMENT_ID,
        "text": "My Shape Copy",
        "insertionIndex": 0
      }
    }
  ]
}

在完成这些更新后,形状及其副本可能如下所示:

复制并修改元素配方结果。

修改图片或视频大纲

以下 presentations.batchUpdate 代码示例展示了如何使用 UpdateImagePropertiesRequest 方法更新由 IMAGE_ELEMENT_ID 指定的图片的轮廓外观。此外,它还使用 UpdateVideoPropertiesRequest 方法更新由 VIDEO_ELEMENT_ID 指定的嵌入式视频的轮廓外观。

请求对对象进行以下更改:

  • 将图片轮廓颜色设为半透明的 ACCENT5 主题颜色。
  • 将视频轮廓颜色设为不透明的 ACCENT1 主题颜色。
  • 将两个的轮廓粗细均设为 3-pt。
  • 将图片轮廓样式设为 SOLID
  • 将视频轮廓样式设为 DASH_DOT

UpdateImagePropertiesRequest 方法和 UpdateVideoPropertiesRequest 方法都只能更改图片和视频的轮廓外观。所有其他属性均为只读属性。此处的请求使用字段掩码指定应仅更改轮廓,以防止代码在将来发生更改。使用字段掩码也可以提高性能。

以下是编辑图片或视频轮廓的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updateImageProperties": {
        "objectId": IMAGE_ELEMENT_ID,
        "fields": "outline",
        "imageProperties": {
          "outline": {
            "dashStyle": "SOLID",
            "outlineFill": {
              "solidFill": {
                "alpha": 0.8,
                "color": {
                  "themeColor": "ACCENT5"
                }
              }
            },
            "weight": {
              "magnitude": 3,
              "unit": "PT"
            }
          }
        }
      }
    },
    {
      "updateVideoProperties": {
        "objectId": VIDEO_ELEMENT_ID,
        "fields": "outline",
        "videoProperties": {
          "outline": {
            "dashStyle": "DASH_DOT",
            "outlineFill": {
              "solidFill": {
                "alpha": 0.8,
                "color": {
                  "themeColor": "ACCENT1"
                }
              }
            },
            "weight": {
              "magnitude": 3,
              "unit": "PT"
            }
          }
        }
      }
    }
  ]
}

完成这些更新后,图片和视频可能如下所示:

制作出图片和视频大纲的食谱。

修改形状的轮廓

以下 presentations.batchUpdate 代码示例展示了如何使用 UpdateShapePropertiesRequest 方法获取现有形状(由 PAGE_ELEMENT_ID 指定)并更新其轮廓的外观。

请求对对象进行以下更改:

  • 将轮廓颜色设为半透明的 ACCENT5 主题颜色。
  • 将轮廓粗细设为 3-pt。
  • 将轮廓样式设为 LONG_DASH

此处的请求使用字段掩码保留未更改的形状属性(例如形状填充颜色)。使用字段掩码也可以提高性能。

以下是编辑形状轮廓的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updateShapeProperties": {
        "objectId": PAGE_ELEMENT_ID,
        "fields": "outline",
        "shapeProperties": {
          "outline": {
            "dashStyle": "LONG_DASH",
            "outlineFill": {
              "solidFill": {
                "alpha": 0.6,
                "color": {
                  "themeColor": "ACCENT5"
                }
              }
            },
            "weight": {
              "magnitude": 3,
              "unit": "PT"
            }
          }
        }
      }
    }
  ]
}

完成这些更新后形状可能如下所示:

修改大纲食谱结果。

设置形状或文本框中文本的格式

以下 presentations.batchUpdate 代码示例展示了如何使用 UpdateTextStyleRequest 方法获取现有形状(由 PAGE_ELEMENT_ID 指定)并更新其文本的外观。

请求对对象进行以下更改:

  • 将文本颜色设置为 ACCENT5 主题颜色。
  • 将字体设置为粗体、斜体 18-pt Corsiva。
  • 为文本添加下划线。

此处的请求使用字段掩码保留未更改的文本样式属性(例如背景颜色、链接或基准偏移量)。使用字段掩码也能提高性能。

以下是在形状或文本框中设置文本格式的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updateTextStyle": {
        "objectId": PAGE_ELEMENT_ID,
        "fields": "foregroundColor,bold,italic,fontFamily,fontSize,underline",
        "style": {
          "foregroundColor": {
            "opaqueColor": {
              "themeColor": "ACCENT5"
            }
          },
          "bold": true,
          "italic": true,
          "underline": true,
          "fontFamily": "Corsiva",
          "fontSize": {
            "magnitude": 18,
            "unit": "PT"
          }
        },
        "textRange": {
          "type": "ALL"
        }
      }
    }
  ]
}

在完成这些更新后,形状文本可能如下所示:

修改文本格式的配方结果。

从 Google 表格导入图表

以下 presentations.batchUpdate 代码示例展示了如何使用 CreateSheetsChartRequest 方法从工作表导入图表并将其放置在 PAGE_ID 指定的幻灯片上。

此请求需要电子表格 ID(由 SPREADSHEET_ID 指定)和电子表格图表 ID(由 SPREADSHEET_CHART_ID 指定)。幻灯片演示文稿中的图表 ID 由 PRESENTATION_CHART_ID 指定。

该请求还会将幻灯片图表的 LinkingMode 设置为 LINKED,以便在源电子表格上的图表发生更新时,您可以更新嵌入式图表。

以下是从 Google 表格导入图表的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createSheetsChart": {
        "objectId": PRESENTATION_CHART_ID,
        "spreadsheetId": SPREADSHEET_ID,
        "chartId": SPREADSHEET_CHART_ID,
        "linkingMode": "LINKED",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 4000000,
              "unit": "EMU"
            },
            "height": {
              "magnitude": 4000000,
              "unit": "EMU"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 100000,
            "translateY": 100000,
            "unit": "EMU"
          }
      }
    }
  ]
}

刷新 Google 表格中的图表

以下 presentations.batchUpdate 代码示例展示了如何使用 RefreshSheetsChartRequest 方法刷新演示文稿中链接的图表,将其替换为表格源电子表格中该图表的最新版本。请求需要 Google 幻灯片演示文稿中的图表 ID(由 PRESENTATION_CHART_ID 指定)。

以下是从 Google 表格中刷新图表的请求协议:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "refreshSheetsChart": {
        "objectId": PRESENTATION_CHART_ID
      }
    }
  ]
}