変換オペレーション

Google スライド API を使用すると、Google スライドの PageElement テキスト ボックス、画像、表、基本的な図形をページ上に配置し、線は線は維持する 直線、維持する点、平行線ですこれらはアフィンと呼ばれています。 なります。ここに示す例は、一般的なページ要素の変換を示しています。 オペレーションの presentations.batchUpdate メソッドを呼び出します。

これらの例では、次の変数を使用します。

  • PRESENTATION_ID - リソースに プレゼンテーション ID。Google Chat では プレゼンテーションの URL からこの ID の値を検出します。
  • PAGE_ID - ページ オブジェクトを指定する場所を示します。 ID。必要に応じて この値を取得するには、URL から、または API 読み取りリクエストを使用します。
  • PAGE_ELEMENT_ID - ページを提供する場所を指定します 要素オブジェクト ID。マイページ ユーザーが作成する要素に、この ID を指定できます( 制限) スライド API の自動作成を許可したりすることもできます。要素 ID API 読み取りリクエストで取得できます

これらの例では、言語に依存しない HTTP リクエストとして記載しています。学習内容 Google API を使用してさまざまな言語でバッチ アップデートを実装する方法 クライアント ライブラリについては、シェイプの追加と text です。

矢印の形状の例

以下の例では、矢印の形をしたページの例が存在すると仮定します 次のサイズと変換データを持つ要素( presentations.pages.get メソッド リクエストなど)が使用されます。この例のシェイプでは、 unit EMU(英国メートル法)と pt (ポイント)。

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 0.3,
    "scaleY": 0.12,
    "shearX": 0,
    "shearY": 0,
    "translateX": 2000000,
    "translateY":  550000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RIGHT_ARROW"
  }
}

要素を別の要素に揃える

次の presentations.batchUpdate コードサンプルを使用して、Terraform で CreateShapeRequest メソッドを使用して、新しいシェイプを正しい位置に作成します。 ページ上にある矢印の形状の例。どちらの場合も、X と Y は 新しいシェイプの左上隅の座標を計算する必要があります。

最初のリクエストでは、左揃えの 100 x 50 pt の長方形が作成されます。 50 pt(50 * 12,700 = 635,000 EMU)に配置されています。 追加できます新しい長方形の X 座標は、 これは矢印の X 座標と同じにして、左枠線をそろえます。Y 座標は矢印の Y 座標に 50 pt を加算した値になります。これは、 矢印の上端から距離を測ります。長方形の座標は、 したがって、次のようになります。

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

2 番目のリクエストでは、同じ水平方向をもつ幅 40 pt の円を作成します。 中央の線は矢印の例と同じですが、100 pt(1,270,000 EMU)から 追加できます円の X 座標は、 矢印の X 座標、矢印の幅、100 pt です。中心線を適用する 新しい円の位置を揃えるには、両方の円の高さを考慮する必要があります。 矢印と円で囲みます。円の Y 座標は矢印の Y 座標である そして、矢印の高さの半分から円の高さの半分を差し引いた値になります。どちらの場合も、 矢印に関連するスケーリング ファクタも考慮する必要があります。 これは、矢印のレンダリングされた幅と高さに影響するためです。円の 座標は以下のようになります。

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

要素を別の要素に揃えるリクエスト プロトコルは次のとおりです。

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "shapeType": "RECTANGLE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 100,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 2000000,
            "translateY": 1185000,
            "unit": "EMU"
          }
        }
      }
    },
    {
      "createShape": {
        "shapeType": "ELLIPSE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 40,
              "unit": "PT"
            },
            "height": {
              "magnitude": 40,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4170000,
            "translateY":  476000,
            "unit": "EMU"
          }
        }
      }
    }
  ]
}

要素を移動する

次の presentations.batchUpdate コードサンプルを使用して、Terraform で UpdatePageElementTransformRequest メソッドを使用して、矢印の形状の例のページ要素を翻訳します。 2 通りの方法があります。

バッチの最初のリクエストでは、矢印が (X,Y) = (2000000, 150000) に移動します。 EMU 座標(絶対変換を使用) applyMode)。 バッチの 2 番目のリクエストはそこから矢印を移動します。今回は 40,000 EMU 右に、35,000 EMU が上に表示されます(相対変換 applyMode を使用)。 使用された Transformation1 行列 要素のサイズと向きの変更を回避するように構築されています。

両方のリクエストを実行した後、矢印の左上隅は(X、Y)にあります。 =(2040000, 115000)EMU 座標。

要素を移動するリクエスト プロトコルは次のとおりです。

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "ABSOLUTE",
        "transform": {
            "scaleX": 0.3,
            "scaleY": 0.12,
            "translateX": 2000000,
            "translateY":  150000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX":  40000,
            "translateY": -35000,
            "unit": "EMU"
        }
      }
    }
  ]
}

元素を映し出す

次の presentations.batchUpdate コードサンプルを使用して、Terraform で UpdatePageElementTransformRequest メソッドを使用して、矢印の形状の例のページ要素を反映させます。 ページ上での位置やサイズの変更は行わずに、中央に沿って横方向に サポートします。

これを行うには、基本的なリフレクション 要素の reference にある transform フレーム。ここでは、 参照フレームのシフトと反射は、API 呼び出しへの 3 つの別々の呼び出し UpdatePageElementTransformRequest メソッド これらの変換の結果を事前に計算しておいた方が効率的です。 そのプロダクトを単一のリクエストとして適用できます。

translation 変換では、 矢印の中心が原点から、または原点からずれます。パラメータ値 わかりやすくするために、計算として表しています。

要素を反映するためのリクエスト プロトコルは次のとおりです。

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX": -2000000 - 0.5 * 0.3  * 3000000,
            "translateY":  -550000 - 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": -1,
            "scaleY":  1,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

要素のサイズを変更する

次の presentations.batchUpdate コードサンプルを使用して、Terraform で UpdatePageElementTransformRequest メソッドを使って、矢印の形状の例のページ要素を 50% に拡大縮小します。 横幅は広く、現在の高さの 80% のみになりますが、矢印の中心は維持されます。 向きは変えずに、同じ位置に動かします。

これは、基本的なスケーリング 要素の reference にある transform フレーム。ここでは、 参照フレームのシフトとスケーリングについては、 UpdatePageElementTransformRequest メソッド これらの変換の結果を事前に計算しておいた方が効率的です。 そのプロダクトを単一のリクエストとして適用できます。

translation 変換では、 矢印の中心が原点から、または原点からずれます。パラメータ値 わかりやすくするために、計算として表しています。

要素のサイズを変更するためのリクエスト プロトコルは次のとおりです。

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1.5,
            "scaleY": 0.8,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

中心を中心に要素を回転する

次の presentations.batchUpdate コードサンプルを使用して、Terraform で UpdatePageElementTransformRequest メソッドを使って矢印の形状の例のページ要素 35 を回転させます 度(矢印の中心は同じ位置を保ちながら反時計回りに 1 度) サイズを維持します。

これを行うには、基本回転を使用します。 要素の reference にある transform フレーム。ここでは、 参照フレームのシフトと回転は、オブジェクトに対する 3 つの別々の呼び出し UpdatePageElementTransformRequest メソッド これらの変換の結果を事前に計算しておいた方が効率的です。 そのプロダクトを単一のリクエストとして

translation 変換では、 矢印の中心が原点から、または原点からずれます。パラメータ値 わかりやすくするために、計算として表しています。

中心を中心に要素を回転させるリクエスト プロトコルは次のとおりです。

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  cos(35 * (pi/180)),
            "scaleY":  cos(35 * (pi/180)),
            "shearX":  sin(35 * (pi/180)),
            "shearY": -sin(35 * (pi/180)),
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}