您可以套用一組更新要求,藉此更新單一標籤,並產生新的草稿修訂版本。舉例來說,您可以更新現有的標籤屬性 (標籤說明),也可以在標籤中新增 Field
。
由於這個方法會採用更新 Request
物件清單,因此標籤更新會以批次更新的形式運作。系統會按照批次要求中指定的順序更新。批次更新中的更新會以不可分割的形式套用。也就是說,如果批次中的任何要求失敗,整個更新作業就會失敗,且不會套用任何 (可能相依的) 變更。標籤維持不變。
如果更新成功,您必須先發布產生的草稿修訂版本,才能將變更套用至任何雲端硬碟項目。
更新標籤物件
標籤包含許多其他可更新的物件類型,例如:
- 標籤屬性
- 欄位和欄位類型
- 選項選擇和選項選擇屬性
這些是眾多物件中的一部分,可控制標籤的外觀和運作方式。
作業類別
labels.delta
方法支援的作業可概略分為下列類別:
類別 | 說明 |
---|---|
建立 | 新增物件。 |
更新 | 更新物件的特定屬性。 |
啟用 | 啟用物件。 |
停用 | 停用物件。 |
刪除 | 移除物件。 |
下一節會使用這些類別,說明特定作業的行為。
更新要求
labels.delta
方法會採用一或多個 Request 物件,每個物件都會指定要執行的單一要求類型。要求類型有很多種,以下是各類要求,並依不同類別分組。
欄位遮罩
許多「更新」和「停用」類型的要求都需要FieldMask
。
這是以半形逗號分隔的欄位清單,列出您要更新的欄位,其他欄位則維持不變。遮罩為必填欄位,確保只有您要編輯的欄位會更新。您必須至少指定一個欄位。
範例
如要更新標籤,請在 labels
集合上使用 delta
方法。
您也必須指定:
useAdminAccess
,true
使用者的管理員憑證。伺服器會先驗證使用者是否為標籤管理員,再允許存取。Request
:指定標籤的適用更新。透過
property
方法取得標籤title
。一或多個
Field
。代表每個標籤的標籤資源。其中包含資源
Name
和ID
,這是標籤的全域專屬 ID。LabelView
是LABEL_VIEW_FULL
,用於設定套用至標籤回應的資源檢視畫面。LABEL_VIEW_FULL
會傳回所有可能的欄位。
本範例使用 ID
更新正確的標籤。
Python
body = {
'use_admin_access': True,
'requests': [{
'update_label': {
'properties': {
'title': 'TITLE'
},
'update_mask': {
'paths': ['title']
}
},
}, {
'create_field': {
'field': {
'properties': {
'display_name': 'DISPLAY_NAME'
},
'text_options': {}
}
}
}],
'view': 'LABEL_VIEW_FULL'
}
response = service.labels().delta(
body=body,
name='labels/ID').execute()
Node.js
var body = {
'use_admin_access': true,
'requests': [{
'update_label': {
'properties': {
'title': 'TITLE'
},
'update_mask': {
'paths': ['title']
}
},
}, {
'create_field': {
'field': {
'properties': {
'display_name': 'DISPLAY_NAME'
},
'text_options': {}
}
}
}],
'view': 'LABEL_VIEW_FULL'
};
service.labels.delta({
'resource': body,
'name': 'labels/ID'
}, (err, res) => {
if (err) return console.error('The API returned an error: ' + err);
console.log(res);
});
標籤、欄位或選項更新後,標籤的修訂版本 ID 會遞增,且標籤會以草稿標籤的形式儲存在資料庫中。標籤會顯示 State
符號,表示有草稿變更,但使用者無法查看。PUBLISHED
hasUnpublishedChanges=true
更新後的標籤必須先PUBLISHED
,變更才會向使用者顯示。詳情請參閱「標籤生命週期」。