轉換作業

Google Slides API 可讓您操控 PageElement敬上 (文字方塊、圖片、表格和基本形狀),同時保留線條 保留點和平行線這些都稱為興趣相似目標對象 轉換。以下範例顯示一些常見的網頁元素轉換 使用指令 presentations.batchUpdate敬上 方法。

這些範例使用下列變數:

  • PRESENTATION_ID:代表您在何處提供 簡報 ID:你可以 從簡報網址找出這個 ID 的值。
  • PAGE_ID:指示您在提供網頁物件的位置。 ID:您可以擷取 該網址的值,或是使用 API 讀取要求。
  • PAGE_ELEMENT_ID:表示您提供頁面 元素物件 ID。個人中心 可以為您建立的元素指定此 ID (有 限制) 或允許 Slides API 自動建立投影片。元素 ID 可透過 API 讀取要求擷取。

這些範例會顯示為中立語言的 HTTP 要求。學習 如何使用 Google API 實作不同語言版本的批次更新 用戶端程式庫,請參閱新增形狀和 文字

箭頭形狀範例

在下方範例中,假設有一個箭頭形狀頁面範例 元素,並採用下列大小和轉換資料 (可透過 presentations.pages.get敬上 方法。範例形狀會使用測量值 unit EMU (英文公制單位) 和分數 (點)。

{
  "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敬上 程式碼範例顯示如何使用 CreateShapeRequest 方法,以與 網頁上的箭頭形狀範例。不論是哪一種情況,X 和 Y 皆是 必須計算新形狀左上角的座標。

第一個要求會建立 100x50 pt 矩形,與左側對齊 箭頭形狀的邊框,但位置為 50 pt (50 * 12,700 = 635,000 EMU) 。新矩形的 X 座標應該是 與箭頭的 X 座標,保持左框線對齊。Y 座標與箭頭的 Y 座標加上 50 pt 相同,因為 距離從箭頭頂端測量距離。矩形的座標 因此:

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

第二次要求則會建立水平具有相同水平的 40pt 寬圓形 做為範例箭頭,但位置為 100 pt (1,270,000 EMU) 箭頭最右側圓形的 X 座標是 箭頭的 X 座標、箭頭寬度與 100 pt。強制執行中心線 而新圓形的對齊方式需要考量兩個 Pod 的高度 箭頭和圓圈。圓形的 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敬上 程式碼範例顯示如何使用 UpdatePageElementTransformRequest 方法,翻譯出範例箭頭形狀網頁元素 有兩種不同方式

批次中的第一個要求會將箭頭移至 (X,Y) = (2000000, 150000) EMU 座標 (使用絕對平移) applyMode)。 批次中的第二個請求將箭頭從該處移出,這次是 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敬上 程式碼範例顯示如何使用 UpdatePageElementTransformRequest 方法反映範例箭頭形狀網頁元素 水平沿著屬性中央移動,而無需變更其在網頁或網頁上的位置 。

方法是使用基本反射方法 加入元素參照 影格。為求明確, 系統會顯示參考影格位移和反射機制,並分別呼叫 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敬上 程式碼範例顯示如何使用 UpdatePageElementTransformRequest範例箭頭形狀網頁元素調整為 50% 的方法 寬度大於目前高度的 80%,同時保留箭頭中心 使用相同的位置,並確保其方向維持一致

方法是使用基本資源配置 加入元素參照 影格。為求明確, 參考影格位移和縮放比例,分別呼叫 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敬上 程式碼範例顯示如何使用 UpdatePageElementTransformRequest 旋轉範例箭頭形狀網頁元素 35 的方法 逆時針角度,同時將箭頭中心維持在相同位置 並維持其大小

方法是使用基本旋轉 加入元素參照 影格。為求明確, 參照影格位移和旋轉,則會分別呼叫 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"
        }
      }
    }
  ]
}