Google Slides API memungkinkan Anda memanipulasi lokasi, ukuran, dan orientasi
PageElement
(kotak teks, gambar, tabel, dan bentuk dasar) di halaman, sambil menjaga garis
tetap lurus serta mempertahankan titik dan garis paralel. Hal ini dikenal sebagai transformasi affine. Contoh di sini menunjukkan beberapa operasi transformasi elemen halaman umum menggunakan metodepresentations.batchUpdate.
Contoh ini menggunakan variabel berikut:
- PRESENTATION_ID—Menunjukkan tempat Anda memberikan ID presentasi. Anda dapat menemukan nilai untuk ID ini dari URL presentasi.
- PAGE_ID—Menunjukkan tempat Anda memberikan ID objek halaman. Anda dapat mengambil nilai untuk ID ini dari URL atau menggunakan permintaan baca API.
- PAGE_ELEMENT_ID—Menunjukkan tempat Anda memberikan ID objek elemen halaman. Anda dapat menentukan ID ini untuk elemen yang Anda buat (dengan beberapa batasan) atau mengizinkan Slides API membuat ID secara otomatis. ID elemen dapat diambil melalui permintaan baca API.
Contoh ini ditampilkan sebagai permintaan HTTP agar netral bahasa. Untuk mempelajari cara menerapkan kumpulan update dalam berbagai bahasa menggunakan library klien Google API, lihat Menambahkan bentuk dan teks.
Contoh bentuk panah
Untuk contoh di bawah ini, asumsikan bahwa ada elemen halaman bentuk panah contoh dengan data ukuran dan transformasi berikut (yang dapat ditemukan dengan permintaan metode
presentations.pages.get
). Bentuk contoh menggunakan pengukuran
unit EMU (English Metric Unit) dan pt
(point).
{
"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"
}
}Menyelaraskan satu elemen dengan elemen lain
Contoh kode
presentations.batchUpdate
berikut menunjukkan cara menggunakan metode
CreateShapeRequest
untuk membuat bentuk baru di posisi yang benar dan selaras dengan elemen halaman bentuk panah
contoh. Dalam kedua kasus, koordinat X dan Y dari sudut kiri atas bentuk baru harus dihitung.
Permintaan pertama membuat persegi panjang 100 x 50 pt yang selaras dengan batas kiri bentuk panah, tetapi diposisikan 50 pt (50 * 12.700 = 635.000 EMU) di bawah tepi atas panah. Koordinat X persegi panjang baru harus sama dengan koordinat X panah agar batas kirinya tetap selaras. Koordinat Y sama dengan koordinat Y panah ditambah 50 pt, karena jarak diukur dari bagian atas panah. Oleh karena itu, koordinat persegi panjang adalah:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
Permintaan kedua membuat lingkaran lebar 40 pt yang memiliki garis tengah horizontal yang sama dengan panah contoh, tetapi diposisikan 100 pt (1.270.000 EMU) di sebelah kanan tepi kanan panah. Koordinat X lingkaran adalah jumlah koordinat X panah, lebar panah, dan 100 pt. Untuk menerapkan keselarasan garis tengah pada lingkaran baru, tinggi panah dan lingkaran harus diperhitungkan. Koordinat Y lingkaran adalah koordinat Y panah ditambah setengah tinggi panah dikurangi setengah tinggi lingkaran. Dalam kedua kasus, faktor penskalaan yang terkait dengan panah juga harus diperhitungkan, karena faktor tersebut memengaruhi lebar dan tinggi panah yang dirender. Oleh karena itu, koordinat lingkaran adalah:
x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU
Berikut adalah protokol permintaan untuk menyelaraskan satu elemen dengan elemen lain:
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"
}
}
}
}
]
}Memindahkan elemen
Contoh kode
presentations.batchUpdate
berikut menunjukkan cara menggunakan metode
UpdatePageElementTransformRequest
untuk menerjemahkan elemen halaman bentuk panah contoh dengan
dua cara berbeda.
Permintaan pertama dalam batch memindahkan panah ke koordinat (X,Y) = (2000000, 150000)
EMU (menggunakan terjemahan absolut
applyMode).
Permintaan kedua dalam batch memindahkan panah dari sana, kali ini 40.000 EMU
ke kanan dan 35.000 EMU ke atas (menggunakan terjemahan relatif applyMode).
Matriks transformasi1 yang digunakan
dibuat untuk menghindari perubahan ukuran dan orientasi elemen.
Setelah menjalankan kedua permintaan, sudut kiri atas panah berada di koordinat (X,Y) = (2040000, 115000) EMU.
Berikut adalah protokol permintaan untuk memindahkan elemen:
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"
}
}
}
]
}Memantulkan elemen
Contoh kode
presentations.batchUpdate
berikut menunjukkan cara menggunakan metode
UpdatePageElementTransformRequest
untuk memantulkan elemen halaman bentuk panah contoh
secara horizontal di sepanjang pusatnya, tanpa mengubah posisinya di halaman atau
penskalaan.
Hal ini dilakukan dengan menggunakan transformasi pantulan dasar dalam frame
referensi elemen. Agar lebih jelas, pergeseran dan pantulan frame referensi ditampilkan dengan tiga panggilan terpisah ke metode
UpdatePageElementTransformRequest, tetapi lebih efisien untuk menghitung terlebih dahulu produk matriks transformasi ini, lalu menerapkan produk tersebut sebagai satu permintaan.
Untuk transformasi terjemahan, pusat bentuk panah dipindahkan ke dan dari asal. Nilai parameter dinyatakan sebagai perhitungan agar lebih jelas.
Berikut adalah protokol permintaan untuk memantulkan elemen:
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"
}
}
}
]
}Mengubah ukuran elemen
Contoh kode
presentations.batchUpdate
berikut menunjukkan cara menggunakan metode
UpdatePageElementTransformRequest
untuk menskalakan elemen halaman bentuk panah contoh agar 50%
lebih lebar dan hanya memiliki 80% dari tinggi saat ini, sambil mempertahankan pusat panah
di posisi yang sama dan mempertahankan orientasinya.
Hal ini dilakukan dengan menggunakan transformasi penskalaan dasar dalam frame referensi elemen. Agar lebih jelas, pergeseran dan penskalaan frame referensi ditampilkan dengan tiga panggilan terpisah ke metode
UpdatePageElementTransformRequest, tetapi lebih efisien untuk menghitung terlebih dahulu produk matriks transformasi ini, lalu menerapkan produk tersebut sebagai satu permintaan.
Untuk transformasi terjemahan, pusat bentuk panah dipindahkan ke dan dari asal. Nilai parameter dinyatakan sebagai perhitungan agar lebih jelas.
Berikut adalah protokol permintaan untuk mengubah ukuran elemen:
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"
}
}
}
]
}Memutar elemen di sekitar pusatnya
Contoh kode
presentations.batchUpdate
berikut menunjukkan cara menggunakan metode
UpdatePageElementTransformRequest
untuk memutar elemen halaman bentuk panah contoh 35
derajat berlawanan arah jarum jam, sambil mempertahankan pusat panah di posisi yang sama
dan mempertahankan ukurannya.
Hal ini dilakukan dengan menggunakan transformasi rotasi dasar dalam frame referensi elemen. Agar lebih jelas, pergeseran dan rotasi frame referensi ditampilkan dengan tiga panggilan terpisah ke metode
UpdatePageElementTransformRequest, tetapi lebih efisien untuk menghitung terlebih dahulu produk matriks transformasi ini, lalu menerapkan produk tersebut sebagai satu permintaan
Untuk transformasi terjemahan, pusat bentuk panah dipindahkan ke dan dari asal. Nilai parameter dinyatakan sebagai perhitungan agar lebih jelas.
Berikut adalah protokol permintaan untuk memutar elemen di sekitar pusatnya:
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"
}
}
}
]
}