バッチ リクエスト

このドキュメントでは、複数の API 呼び出しをバッチ処理して、 クライアントが確立する必要がある接続の数です。バッチ処理では、アプリケーションの ネットワークのラウンドトリップを減らして スループットを向上できます

概要

クライアントで接続を行うたびに、ある程度のオーバーヘッドが発生します。 Google スライド API ではバッチ処理がサポートされており、クライアントが複数の リクエスト オブジェクト。各オブジェクトは、実行するリクエストの種類を 1 つ指定し、 単一のバッチ リクエストにまとめることができます。バッチ リクエストは次の処理によってパフォーマンスを向上させます。 複数のサブリクエストをサーバーへの 1 回の呼び出しにまとめ、 返すことができます

常に複数のリクエストをバッチ処理することをおすすめします。以下に例を示します。 バッチ処理を使用できる状況の例:

  • API を使い始めたばかりで、アップロードするデータが大量にあります。
  • メタデータや、フォーマットなどのプロパティを複数の 説明します。
  • 多くのオブジェクトを削除する必要がある。

制限、承認、依存関係に関する考慮事項

バッチ更新を採用する際に考慮すべきその他の項目は次のとおりです。

  • 各バッチ リクエスト(すべてのサブリクエストを含む)は、1 つの API としてカウントされます。 使用量上限に対するリクエスト。
  • バッチ リクエストは 1 回認証されます。この単一の認証が リクエスト内のすべてのバッチ アップデート オブジェクトに保持されます。
  • サーバーは、サブリクエストを 使用します。後のサブリクエストは、セッション中に実行されたアクションに依存する 以前のサブリクエストを実行します。たとえば、同じバッチ リクエストで、 既存のドキュメントにテキストを挿入してスタイルを設定する。

バッチ リクエストの詳細

バッチ リクエストは 1 回の batchUpdate メソッド呼び出しで構成されます。 プレゼンテーションを追加、書式設定するなど、複数のサブリクエストを持つことができます。

各リクエストは、適用前に検証されます。バッチ内のすべてのサブリクエスト アトミックに適用されます。つまり、いずれかのリクエストが有効でない場合、 アップデート全体が失敗し、アップデートに 適用されます。

一部のリクエストでは、適用されたリクエストに関する情報がレスポンスとして返されます。 たとえば、オブジェクトを追加するすべてのバッチ アップデート リクエストはレスポンスを返すので、 新しく追加されたオブジェクトのメタデータ(ID や できます。

このアプローチでは、1 つの API で Google ドキュメント全体を作成できます。 複数のサブリクエストを含むバッチ アップデート リクエストを作成できます。

バッチ リクエストの形式

リクエストは、単一の JSON リクエストで、 1 つの必須プロパティ requests を持つネストされたサブリクエスト。「 個々のリクエストの配列として構成されます。各リクエストで使用する リクエスト オブジェクトを表し、そのプロパティを格納する JSON。

バッチ レスポンスの形式

バッチ リクエストのレスポンス形式は、 リクエスト形式に従って処理します。サーバーのレスポンスには、リクエストに対する 1 つの レスポンス オブジェクト。

メインの JSON オブジェクトのプロパティは replies という名前です。回答 は配列として返され、各リクエストに対する各レスポンスは 対応するリクエストと同じインデックス順序になります。一部のリクエストには、 その配列インデックスのレスポンスが空になります。

次のコードサンプルは、 スライド API。

リクエスト

このバッチ リクエストの例では、次の処理を行います。

  • 追加 presentations.pages リソースを insertionIndex1 の既存のプレゼンテーションに CreateSlideRequest メソッドを呼び出します。

  • 次のコマンドを使用して、TEXT_BOX タイプの shapeType を新しいスライドに追加します。 CreateShapeRequest メソッドを呼び出します。

  • 「Hello World」と挿入する新しいフィールドに InsertTextRequest メソッドを呼び出します。

{
   "requests":[
      {
         "createSlide":{
            "insertionIndex":1,
            "objectId":"newSlide"
         }
      },
      {
         "createShape":{
            "elementProperties":{
               "pageObjectId":"newSlide",
               "size":{
                  "height":{
                     "magnitude":50,
                     "unit":"PT"
                  },
                  "width":{
                     "magnitude":200,
                     "unit":"PT"
                  }
               }
            },
            "shapeType":"TEXT_BOX",
            "objectId":"newTextBox"
         }
      },
      {
         "insertText":{
            "objectId":"newTextBox",
            "text":"Hello World"
         }
      }
   ]
}

レスポンス

この例のバッチ レスポンスは、各サブリクエストがどのように 適用されました。注意すべき点は、 InsertTextRequest メソッドには応答が含まれていないため、[2] の配列のインデックス値は 空の中かっこで構成されます。バッチ リクエストでは、 WriteControl プロパティを使用して、書き込みリクエストの実行方法を確認できます。

{
   "requiredRevisionId": ID
   "presentationId": "",
   "replies":[
      {
         "createSlide":{
            "objectId":"newSlide"
         }
      },
      {
         "createShape":{
            "objectId":"newTextBox"
         }
      },
      {
         
      }
   ],
   "writeControl":{
      "requiredRevisionId": REVISION_ID
   }
}