Fitur metadata memungkinkan Anda mengaitkan metadata dengan berbagai entitas dan lokasi dalam spreadsheet. Kemudian, Anda dapat membuat kueri metadata ini dan menggunakannya untuk menemukan objek yang terkait dengannya.
Anda dapat mengaitkan metadata dengan baris, kolom, sheet, atau spreadsheet.
Tentang metadata
Berikut ini menjelaskan beberapa aspek penting metadata yang harus Anda pertimbangkan saat menggunakan Sheets API:
Metadata sebagai tag: Salah satu penggunaan metadata developer adalah tag yang memberi nama lokasi dalam spreadsheet hanya menggunakan kunci dan lokasi. Misalnya, Anda dapat mengaitkan
headerRowdengan baris tertentu atautotalsdengan kolom tertentu dalam sheet. Tag dapat digunakan untuk mengikat secara semantik bagian spreadsheet ke kolom di alat atau database pihak ketiga, sehingga perubahan pada spreadsheet tidak akan merusak aplikasi Anda.Metadata sebagai properti: Metadata yang dibuat dengan menentukan kunci, lokasi, dan nilai bertindak sebagai pasangan nilai kunci yang terkait dengan lokasi tersebut dalam spreadsheet. Misalnya, Anda dapat mengaitkan:
formResponseId = resp123dengan barislastUpdated = 1477369882dengan kolom
Dengan ini, Anda dapat menyimpan dan mengakses properti bernama kustom yang terkait dengan area atau data tertentu dalam spreadsheet.
Metadata yang terlihat di project versus dokumen: Untuk mencegah satu project developer mengganggu metadata project developer lain, ada dua setelan metadata
visibilityyang tersedia:projectdandocument. Dengan menggunakan API Spreadsheet, metadataprojecthanya dapat dilihat dan diakses dari project Google Cloud yang membuatnya. Metadatadocumentdapat diakses dari project Google Cloud mana pun yang memiliki akses ke dokumen.Kueri yang tidak secara eksplisit menentukan
visibilityakan menampilkan metadatadocumentyang cocok dan metadataprojectyang cocok untuk project Google Cloud yang membuat permintaan.Keunikan: Kunci metadata tidak harus unik, tetapi
metadataIdharus berbeda. Jika Anda membuat metadata dan membiarkan kolom ID-nya tidak ditentukan, API akan menetapkannya. ID ini dapat digunakan untuk mengidentifikasi metadata, sementara kunci dan atribut lainnya dapat digunakan untuk mengidentifikasi kumpulan metadata.Menampilkan metadata melalui permintaan API: Objek
DataFilteradalah bagian dari panggilan API yang menjelaskan data yang akan dipilih atau ditampilkan dari permintaan API.Satu objek
DataFilterhanya dapat menentukan satu jenis kriteria filter untuk menemukan data:developerMetadataLookup: Memilih data yang terkait dengan metadata developer yang ditentukan yang cocok dengan kriteria.a1Range: Memilih data yang cocok dengan rentang notasi A1 yang ditentukan. Misalnya,Sheet1!A1:B10.gridRange: Memilih data yang cocok dengan rentang petak yang ditentukan menggunakan indeks berbasis nol. Misalnya,Sheet1!A3:B4 == sheetId: 123456, startRowIndex: 2, endRowIndex: 4, startColumnIndex: 0, endColumnIndex: 2.
Untuk memfilter di beberapa lokasi atau kriteria, Anda dapat menggunakan beberapa objek
DataFilterdalam satu permintaan API. Berikan array atau daftar objekDataFilterke permintaan batch seperti metodespreadsheets.values.batchGetByDataFilter. Rentang apa pun yang cocok dengan salah satu filter data dalam permintaan akan ditampilkan atau diubah.Untuk mengetahui informasi selengkapnya, lihat Membaca dan menulis nilai yang terkait dengan metadata.
Kasus penggunaan
Berikut adalah beberapa contoh kasus penggunaan untuk mengelola metadata:
Mengaitkan data arbitrer dengan berbagai entitas dan lokasi dalam spreadsheet: Misalnya, kaitkan
totalsdengan kolom D, atauresponseId = 1234dengan baris 7.Menemukan semua lokasi dan data yang terkait dengan kunci atau atribut metadata tertentu: Misalnya, jika diberi kunci
totalsyang terkait dengan kolom D atau diberiresponseId, kembalikan semua baris dengan metadataresponseIddan nilai metadata yang terkait dengannya.Temukan semua data yang terkait dengan entitas atau lokasi tertentu: Misalnya, untuk kolom D, tampilkan semua metadata yang terkait dengan lokasi tersebut.
Mengambil nilai di lokasi dengan menentukan metadata terkait: Misalnya, jika diberi
totals, menampilkan representasi nilai yang ada di kolom atau baris terkait, atau jika diberisummary, menampilkan representasi resource Spreadsheet terkait.Perbarui nilai di lokasi dengan menentukan metadata terkait: Misalnya, alih-alih memperbarui nilai dalam baris melalui notasi A1, perbarui nilai dengan menunjukkan ID metadata.
Membaca dan menulis metadata
Resource
spreadsheets.developerMetadata
memberikan akses ke metadata yang terkait dengan lokasi atau objek dalam
spreadsheet. Metadata developer dapat digunakan untuk mengaitkan data arbitrer dengan berbagai bagian spreadsheet. Metadata tetap dikaitkan di lokasi tersebut saat spreadsheet diedit.
Membuat metadata
Untuk membuat metadata, gunakan metode
batchUpdate
pada resource
spreadsheets,
dan berikan
CreateDeveloperMetadataRequest
dengan nilai metadataKey, location, dan visibility dari
resource spreadsheets.developerMetadata. Anda dapat secara opsional menentukan
metadataValue atau metadataId eksplisit.
Jika Anda menentukan ID yang sudah digunakan, permintaan tidak akan berhasil. Jika Anda tidak memberikan ID, API akan menetapkannya.
Dalam contoh ini, kita memberikan kunci, nilai, dan baris dalam permintaan. Respons menampilkan nilai metadata developer ini, beserta ID metadata yang ditetapkan.
Permintaan
{
"requests": [
{
"createDeveloperMetadata": {
"developerMetadata": {
"location": {
"dimensionRange": {
"sheetId": SHEET_ID,
"dimension": "ROWS",
"startIndex": 6,
"endIndex": 7
}
},
"visibility": "DOCUMENT",
"metadataKey": "Sales",
"metadataValue": "2022"
}
}
}
]
}Respons
{
"spreadsheetId": SPREADSHEET_ID,
"replies": [
{
"createDeveloperMetadata": {
"developerMetadata": {
"metadataId": METADATA_ID,
"metadataKey": "Sales",
"metadataValue": "2022",
"location": {
"locationType": "ROW",
"dimensionRange": {
"sheetId": SHEET_ID,
"dimension": "ROWS",
"startIndex": 6,
"endIndex": 7
}
},
"visibility": "DOCUMENT"
}
}
}
]
}Membaca satu item metadata
Untuk mengambil satu metadata developer yang berbeda, gunakan metode
spreadsheets.developerMetadata.get, dengan menentukan spreadsheetId yang berisi metadata dan metadataId unik metadata
developer.
Permintaan
Dalam contoh ini, kita memberikan ID spreadsheet dan ID metadata dalam permintaan. Respons menampilkan nilai metadata developer untuk ID metadata.
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/developerMetadata/METADATA_ID
Respons
{
"metadataId": METADATA_ID,
"metadataKey": "Sales",
"metadataValue": "2022",
"location": {
"locationType": "ROW",
"dimensionRange": {
"sheetId": SHEET_ID,
"dimension": "ROWS",
"startIndex": 6,
"endIndex": 7
}
},
"visibility": "DOCUMENT"
}Membaca beberapa item metadata
Untuk mengambil beberapa item metadata developer, gunakan metode
spreadsheets.developerMetadata.search. Anda harus menentukan
DataFilter yang cocok dengan
metadata yang ada pada kombinasi properti apa pun seperti kunci, nilai,
lokasi, atau visibilitas.
Dalam contoh ini, kami memberikan beberapa ID metadata dalam permintaan. Respons menampilkan nilai metadata developer untuk setiap ID metadata.
Permintaan
{
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
},
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
]
}Respons
{
"matchedDeveloperMetadata": [
{
"developerMetadata": {
"metadataId": METADATA_ID,
"metadataKey": "Revenue",
"metadataValue": "2022",
"location": {
"locationType": "SHEET",
"sheetId": SHEET_ID
},
"visibility": "DOCUMENT"
},
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
]
},
{
"developerMetadata": {
"metadataId": METADATA_ID,
"metadataKey": "Sales",
"metadataValue": "2022",
"location": {
"locationType": "SHEET",
"sheetId": SHEET_ID
},
"visibility": "DOCUMENT"
},
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
]
}
]
}Update metadata
Untuk memperbarui metadata developer, gunakan metode
spreadsheets.batchUpdate
dan berikan
UpdateDeveloperMetadataRequest.
Anda harus menentukan
DataFilter yang menargetkan
metadata yang akan diperbarui, resource
spreadsheets.developerMetadata
dengan nilai baru, dan masker
kolom yang menjelaskan kolom yang akan
diperbarui.
Dalam contoh ini, kita memberikan ID metadata, ID sheet, dan kunci metadata baru dalam permintaan. Respons menampilkan nilai metadata developer ini, serta kunci metadata yang diperbarui.
Permintaan
{
"requests": [
{
"updateDeveloperMetadata": {
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
],
"developerMetadata": {
"location": {
"sheetId": SHEET_ID
},
"metadataKey": "SalesUpdated"
},
"fields": "location,metadataKey"
}
}
]
}Respons
{
"spreadsheetId": SPREADSHEET_ID,
"replies": [
{
"updateDeveloperMetadata": {
"developerMetadata": [
{
"metadataId": METADATA_ID,
"metadataKey": "SalesUpdated",
"metadataValue": "2022",
"location": {
"locationType": "SHEET",
"sheetId": SHEET_ID
},
"visibility": "DOCUMENT"
}
]
}
}
]
}Menghapus metadata
Untuk menghapus metadata developer, gunakan metode
batchUpdate, dan berikan
DeleteDeveloperMetadataRequest.
Anda harus menentukan
DataFilter untuk memilih
metadata yang ingin Anda hapus.
Dalam contoh ini, kami memberikan ID metadata dalam permintaan. Respons menampilkan nilai metadata developer untuk ID metadata.
Untuk mengonfirmasi bahwa metadata developer telah dihapus, gunakan metode spreadsheets.developerMetadata.get
dengan menentukan ID metadata yang dihapus. Anda akan menerima respons kode status HTTP 404: Not Found, dengan pesan yang menyatakan "Tidak ada metadata developer dengan ID METADATA_ID.
Permintaan
{
"requests": [
{
"deleteDeveloperMetadata": {
"dataFilter": {
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
}
}
]
}Respons
{
"spreadsheetId": SPREADSHEET_ID,
"replies": [
{
"deleteDeveloperMetadata": {
"deletedDeveloperMetadata": [
{
"metadataId": METADATA_ID,
"metadataKey": "SalesUpdated",
"metadataValue": "2022",
"location": {
"locationType": "SHEET",
"sheetId": SHEET_ID
},
"visibility": "DOCUMENT"
}
]
}
}
]
}Membaca dan menulis nilai yang terkait dengan metadata
Anda juga dapat mengambil dan memperbarui nilai sel dalam baris dan kolom dengan menentukan
metadata developer terkait dan nilai yang ingin Anda perbarui. Untuk melakukannya,
gunakan salah satu metode berikut dengan
DataFilter yang cocok.
Mendapatkan nilai sel menurut metadata
Untuk mendapatkan nilai sel menurut metadata, gunakan metode
spreadsheets.values.batchGetByDataFilter. Anda harus menentukan ID spreadsheet dan satu atau beberapa filter data yang cocok dengan metadata.
Dalam contoh ini, kami memberikan ID metadata dalam permintaan. Respons menampilkan nilai sel baris (nomor model, penjualan bulanan) untuk ID metadata.
Permintaan
{
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
],
"majorDimension": "ROWS"
}Respons
{
"spreadsheetId": SPREADSHEET_ID,
"valueRanges": [
{
"valueRange": {
"range": "Sheet7!A7:Z7",
"majorDimension": "ROWS",
"values": [
[
"W-24",
"74"
]
]
},
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
]
}
]
}Mendapatkan spreadsheet berdasarkan metadata
Saat mengambil spreadsheet, Anda dapat menampilkan subset data menggunakan
metode spreadsheets.getByDataFilter. Anda harus menentukan ID spreadsheet dan satu atau beberapa filter data yang cocok dengan metadata.
Permintaan ini berfungsi sebagai permintaan "GET spreadsheet" reguler, kecuali daftar metadata yang cocok dengan filter data yang ditentukan akan menentukan sheet, data petak, dan resource objek lainnya dengan metadata yang ditampilkan. Jika
includeGridData
ditetapkan ke true, data petak yang berpotongan dengan rentang petak yang ditentukan juga
ditampilkan untuk sheet. Kolom includeGridData diabaikan jika masker
kolom ditetapkan dalam permintaan.
Dalam contoh ini, kita memberikan ID metadata dan menetapkan includeGridData ke false dalam permintaan. Respons menampilkan properti spreadsheet dan sheet.
Permintaan
{
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
],
"includeGridData": false
}Respons
{ "spreadsheetId": SPREADSHEET_ID, "properties": { "title": "Sales Sheet", "locale": "en_US", "autoRecalc": "ON_CHANGE", "timeZone": "America/Los_Angeles", "defaultFormat": { "backgroundColor": { "red": 1, "green": 1, "blue": 1 }, "padding": { "top": 2, "right": 3, "bottom": 2, "left": 3 }, "verticalAlignment": "BOTTOM", "wrapStrategy": "OVERFLOW_CELL", "textFormat": { "foregroundColor": {}, "fontFamily": "arial,sans,sans-serif", "fontSize": 10, "bold": false, "italic": false, "strikethrough": false, "underline": false, "foregroundColorStyle": { "rgbColor": {} } }, "backgroundColorStyle": { "rgbColor": { "red": 1, "green": 1, "blue": 1 } } }, "spreadsheetTheme": { "primaryFontFamily": "Arial", "themeColors": [ { "colorType": "TEXT", "color": { "rgbColor": {} } }, { "colorType": "BACKGROUND", "color": { "rgbColor": { "red": 1, "green": 1, "blue": 1 } } }, { "colorType": "ACCENT1", "color": { "rgbColor": { "red": 0.25882354, "green": 0.52156866, "blue": 0.95686275 } } }, { "colorType": "ACCENT2", "color": { "rgbColor": { "red": 0.91764706, "green": 0.2627451, "blue": 0.20784314 } } }, { "colorType": "ACCENT3", "color": { "rgbColor": { "red": 0.9843137, "green": 0.7372549, "blue": 0.015686275 } } }, { "colorType": "ACCENT4", "color": { "rgbColor": { "red": 0.20392157, "green": 0.65882355, "blue": 0.3254902 } } }, { "colorType": "ACCENT5", "color": { "rgbColor": { "red": 1, "green": 0.42745098, "blue": 0.003921569 } } }, { "colorType": "ACCENT6", "color": { "rgbColor": { "red": 0.27450982, "green": 0.7411765, "blue": 0.7764706 } } }, { "colorType": "LINK", "color": { "rgbColor": { "red": 0.06666667, "green": 0.33333334, "blue": 0.8 } } } ] } }, "sheets": [ { "properties": { "sheetId": SHEET_ID, "title": "Sheet7", "index": 7, "sheetType": "GRID", "gridProperties": { "rowCount": 1000, "columnCount": 26 } } } ], "spreadsheetUrl": SPREADSHEET_URL }
Memperbarui nilai menurut metadata
Untuk memperbarui nilai sel yang cocok dengan metadata tertentu, gunakan metode
spreadsheets.values.batchUpdateByDataFilter. Anda harus menentukan ID spreadsheet,
valueInputOption,
dan satu atau beberapa
nilai DataFilterValueRange
yang cocok dengan metadata.
Dalam contoh ini, kita memberikan ID metadata dan nilai baris yang diperbarui dalam permintaan. Respons menampilkan properti dan data yang diperbarui untuk ID metadata.
Permintaan
{
"data": [
{
"dataFilter": {
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
},
"majorDimension": "ROWS",
"values": [
[
"W-24",
"84"
]
]
}
],
"includeValuesInResponse": true,
"valueInputOption": "USER_ENTERED"
}Respons
{
"spreadsheetId": SPREADSHEET_ID,
"totalUpdatedRows": 1,
"totalUpdatedColumns": 2,
"totalUpdatedCells": 2,
"totalUpdatedSheets": 1,
"responses": [
{
"updatedRange": "Sheet7!A7:B7",
"updatedRows": 1,
"updatedColumns": 2,
"updatedCells": 2,
"dataFilter": {
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
},
"updatedData": {
"range": "Sheet7!A7:Z7",
"majorDimension": "ROWS",
"values": [
[
"W-24",
"84"
]
]
}
}
]
}Menghapus nilai menurut metadata
Untuk menghapus nilai sel yang cocok dengan metadata tertentu, gunakan metode
spreadsheets.values.batchClearByDataFilter. Anda harus menentukan filter data untuk memilih metadata yang ingin dihapus.
Permintaan
Dalam contoh ini, kami memberikan ID metadata dalam permintaan. Respons menampilkan ID spreadsheet dan rentang yang dihapus.
{
"dataFilters": [
{
"developerMetadataLookup": {
"metadataId": METADATA_ID
}
}
]
}Respons
{
"spreadsheetId": SPREADSHEET_ID,
"clearedRanges": [
"Sheet7!A7:Z7"
]
}Batas penyimpanan metadata
Ada batasan pada jumlah total metadata yang dapat Anda simpan dalam spreadsheet. Batas ini diukur dalam karakter dan terdiri dari dua komponen:
| Item | Alokasi batas penyimpanan |
|---|---|
| Spreadsheet | 30.000 karakter |
| Setiap sheet dalam spreadsheet | 30.000 karakter |
Anda dapat menyimpan hingga 30.000 karakter untuk spreadsheet. Selain itu, Anda dapat menyimpan 30.000 karakter untuk setiap sheet dalam spreadsheet (30.000 untuk sheet satu, 30.000 untuk sheet dua, dan seterusnya). Jadi,spreadsheet dengan tiga sheet dapat berisi hingga 120.000 karakter metadata.
Setiap karakter di kolom metadataKey dan metadataValue dari
spreadsheets.developerMetadata
resource dihitung dalam batas ini.
Topik terkait
- Menerapkan filter ke data Google Spreadsheet
- Mengelola visibilitas data dengan filter
- Batas penggunaan