Slides API を効果的に使用するには、プレゼンテーションとそのコンポーネントのアーキテクチャ、およびこれらのコンポーネント間の相互作用を理解する必要があります。このページでは、次のトピックについて詳しく説明します。
- プレゼンテーション コンポーネントのコンセプト モデル
- API がこれらのコンポーネントをどのように表すか
- コンポーネントのスタイル設定プロパティ
この概要と他のコンセプトの概要を読むことで、入門ガイド、リファレンス ドキュメント、コードサンプルを理解して使用することが容易になります。
プレゼンテーション、ページ、ページ要素
Google スライドの最も外側のコンテナ要素はプレゼンテーションです。これは、Google ドライブに保存したり、他のユーザーと共有したりできる単位です。
各プレゼンテーションには、さまざまな種類のページが含まれています。ページの 1 つの種類はスライドです。これは、プレゼンテーションが画面にレンダリングされるときにユーザーが表示して切り替えるページです。
各ページには、次の図に示すように、ページのコンテンツを構成する複数のページ要素が含まれています。

スライド以外にも、さまざまなスライドにデザインを適用して一貫した外観を作成できるページタイプがあります。これらの他のページタイプは、マスターとレイアウトです。次の図に示すように、これらのプロパティによってスライドのレンダリング方法が決まります。

マスター - マスターページには 2 つの目的があります。マスターのスライドのプレースホルダには、プレゼンテーション全体で使用されるテキスト スタイルのデフォルトが含まれています。マスター スライドの背景とその他の図形は、そのマスターに基づくすべてのスライドのデフォルトの背景になります。プレゼンテーションのすべてのスライドに表示する会社のロゴがある場合は、マスターに配置します。
レイアウト - レイアウト テンプレートは、各タイプのスライドでコンテンツをどのように配置するかを決定します。たとえば、すべてのタイトル スライドを特定の方法で表示する場合は、タイトル レイアウト テンプレートを編集します。
他にも、ノートページとノートマスターという 2 種類のページがありますが、これらは主にスピーカー ノートを操作する場合に関連します。
API 表現のタイプと構造
このセクションでは、前述の Google スライドのコンセプト モデルが Slides API でどのように表現されるかについて説明します。
次の図は、Slides API のタイプとしてのプレゼンテーション、ページ、ページ要素の関係を示しています。

以降のセクションでは、これらのタイプが JSON でどのように表されるかについて説明します。
プレゼンテーション
プレゼンテーションには、いくつかのプロパティと、プレゼンテーションに含まれるページが含まれています。
{
"presentationId": string,
"pageSize": { object(Size) },
"slides": [ { object(Page) } ],
"title": string,
"masters": [ { object(Page) } ],
"layouts": [ { object(Page) } ],
"notesMaster": object(Page),
"locale": string,
}
ページ
ページには一連のプロパティが含まれ、その中にページ要素が含まれます。
{
"objectId": string,
"pageType": enum(PageType),
"pageElements": [ { object(PageElement) } ],
"pageProperties": { object(PageProperties) },
// Union field properties can be only one of the following:
"slideProperties": { object(SlideProperties) },
"layoutProperties": { object(LayoutProperties) },
"notesProperties": { object(NotesProperties) },
// End of list of possible types for union field properties.
}
ページ要素
ページ要素は、ページに配置されるビジュアル コンポーネントです。API のページ要素には、ページ要素の種類に応じて異なるフィールドなど、多数のプロパティが含まれています。
{
"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": { object(Shape) },
"image": { object(Image) },
"video": { object(Video) },
"line": { object(Line) },
"table": { object(Table) },
"wordArt": { object(WordArt) },
"sheetsChart": { object(SheetsChart) },
// End of list of possible types for union field element_kind.
}
ページ要素にはいくつかの種類があり、上記の定義のユニオン フィールド element_kind で定義されています。これらの種類のページ要素については、次の表をご覧ください。
| 要素の種類 | 説明 |
|---|---|
| グループ | 個別のユニットとして扱われるページ要素のセット。これらはまとめて移動、拡大縮小、回転できます。 |
| 図形 | 長方形、楕円、テキスト ボックスなどの単純なビジュアル オブジェクト。図形にはテキストを含めることができるため、スライドを作成する際に最もよく使用されるページ要素です。 |
| 画像 | スライドにインポートされたグラフィック。 |
| 動画 | スライドにインポートされた動画。 |
| 行 | 視覚的な線、曲線、コネクタ。 |
| テーブル | コンテンツのグリッド。 |
| WordArt | 図形のように動作する視覚的なテキスト要素。 |
| SheetsChart | Google スプレッドシートから Google スライドにインポートされたグラフ。 |
ページとページ要素のプロパティ
Slides API を使用すると、プレゼンテーションのページとページ要素の外観を読み取り、更新できます。ページ要素が異なると、ページ要素のレンダリング方法を制御するプロパティも異なります。
各ページ要素の種類には、対応するプロパティ要素とプロパティ更新メッセージがあります。次に例を示します。
- ページ要素タイプ Shape があります。
- プロパティ フィールドは shapeProperties です。
- これらのプロパティを更新するリクエストは UpdateShapePropertiesRequest です。
同じ要素、プロパティ、更新リクエストのセットが、ページ要素タイプごとに存在します。Image/imageProperties/UpdateImageProperties などです。
properties 属性は、要素の読み取り時にいつでも読み取ることができます。その値を変更するには、batchUpdate メソッドのペイロードとして一致したリクエスト タイプで使用します。これにより、プレゼンテーションでこれらの値を変更できます。
プロパティの種類
Slides API のいくつかの種類のオブジェクトに共通するプロパティがあります。
| プロパティ | 説明 |
|---|---|
| 色 | Slides API の色は、RGB 値またはテーマカラーへの参照のいずれかです。テーマカラーは名前(「DARK1」など)で参照され、ページのカラーパターンを使用して RGB 値にマッピングできます。このカラーパターンは、スライド エディタでプレゼンテーションのテーマを変更するときに更新されるのが一般的です。 |
| 塗りつぶし | 塗りつぶしは、オブジェクト内の空のスペースのレンダリングを表します。Google スライドで最も一般的にサポートされている塗りつぶしは、単色の塗りつぶしです。これは、オブジェクトの内部を単一の単色で塗りつぶすものです。塗りつぶしは、ページの背景にも使用できます。 |
| アウトライン | アウトラインは、ページ要素を囲む一連の線を表します。線の色は塗りつぶしで制御されます。発信者は、アウトラインの幅とダッシュ スタイルを調整することもできます。 |
| シャドウ | シャドウは、オブジェクトによって投影される物理的な影を模倣するための視覚効果を表します。現在、Slides API のシャドウは読み取り専用です。 |
プロパティの更新
プロパティを更新するには、batchUpdate 呼び出しで適切な Update...Properties リクエストを使用します(例: 図形の場合は UpdateShapeProperties)。これらのリクエストは、完全なプロパティ メッセージを受け入れ、フィールド マスクを使用して、プロパティ メッセージのどのフィールドを更新するかを決定できます。
プロパティからの継承
ページまたはページ要素は、親オブジェクトからプロパティを継承できます。オブジェクトのプロパティ(定義するプロパティと継承するプロパティを含む)によって、最終的な外観が決まります。
- ページ プロパティ - ページは、定義されていないプロパティを継承しますが、それらはベースとなるレイアウトまたはマスターで定義されています。
- 図形のプロパティ - 図形をプレースホルダとしてマークし、プロパティを継承する別のプレースホルダ図形(ページの親レイアウトまたはマスター上)を明示的に参照できます。
これらのアイデアについては、以降の段落で詳しく説明します。
ページ プロパティの継承
スライド、レイアウト、マスターの構造は、プレゼンテーション内の継承階層を定義します。スライドはレイアウトから継承し、レイアウトはマスターから継承します。スライドの親レイアウトとマスターは、スライドの slideProperties フィールドで指定されます。
ページは、背景やカラーパターンなどのプロパティを親ページから継承できます。プロパティを継承するには、子ページで PageProperties メッセージにそのプロパティの値を設定しないようにします。親で定義された値を「オーバーライド」しないことで、ページは継承された値を受け入れます。
次の図は、マスターから継承されたレイアウトからプロパティを継承するスライドを示しています。

スライドのレンダリングに使用されるプロパティは、スライドで定義されているプロパティと、スライドが継承するプロパティの組み合わせです。この例では、スライド 1 のレンダリングに使用される解決済みの値は次のとおりです。
- PropertyA は「Red」です。
- PropertyB は「Orange」です。
形状プロパティの継承
図形は、塗りつぶし、枠線、影などのプロパティを他の図形から継承できます。Shape.placeholder フィールドが設定されている場合、シェイプはプレースホルダです。子プレースホルダの Shape.placeholder.parentObjectId フィールドは、親プレースホルダを識別します。レイアウトに基づいて新しいスライドを作成すると、そのレイアウト内のプレースホルダが新しいスライドの子シェイプとして表示されます。同様に、マスターページのプレースホルダは、レイアウトのプレースホルダの親として機能します。
この継承階層が定義されている場合、子ページは、ShapeProperties メッセージでその値を設定しないことで、プロパティを継承します。親で定義された値をオーバーライドしないことで、子シェイプは継承された値を受け入れます。
次の図は、スライド、レイアウト、マスターに含まれる 3 つのプレースホルダ間のプロパティの継承を示しています。

プレースホルダ シェイプのレンダリングに使用されるプロパティは、プレースホルダ シェイプが定義するプロパティと、プレースホルダ シェイプが継承するプロパティの組み合わせです。この例では、これらのシェイプの解決された値は次のとおりです。
- プレースホルダ 1: propertyA は「Yellow」、propertyB は「Green」としてレンダリングされます。
- プレースホルダ 2: propertyA は「Yellow」、propertyB は「Purple」としてレンダリングされます。
- プレースホルダ 3: propertyA は「黄色」、propertyB は「紫」としてレンダリングされます。
親を持つことができるページ要素はシェイプのみです。画像、表、グラフなどの他のタイプは、プレースホルダにすることも、親にすることもできません。
PropertyState を使用してプロパティを「非表示」にする
PropertyState 列挙型は、シェイプのプロパティが実際にレンダリングに使用されるかどうか、または値が子シェイプによる継承にのみ使用されるかどうかを制御します。プロパティの状態が NOT_RENDERED のプロパティは、ページでシェイプをレンダリングする際には使用されませんが、対応するプロパティの状態が RENDERED の子は、このプロパティを継承できます。
次の図は、PropertyState フィールドを操作する 3 つのプレースホルダ間のプロパティの継承を示しています。

シェイプ プロパティのレンダリングは、PropertyState フィールドの影響を受ける可能性があります。この例では、これらのシェイプの解決された値は次のようになります。
- Placeholder1: propertyA は「Red」としてレンダリングされます。
- Placeholder2: propertyA はレンダリングされません。これが outline プロパティの場合、Placeholder2 にはアウトラインがありません。
- Placeholder3: propertyA はレンダリングされません。
PropertyState 列挙型には、もう 1 つの値があります。INHERIT プロパティの状態は、プロパティの状態自体が継承され、親の値を使用する必要があることを意味します。親のないシェイプに INHERIT のプロパティ状態を設定することはできません。