更新標籤

您可以套用一組更新要求,藉此更新單一標籤,並產生新的草稿修訂版本。舉例來說,您可以更新現有的標籤屬性 (標籤說明),也可以在標籤中新增 Field

由於這個方法會採用更新 Request 物件清單,因此標籤更新會以批次更新的形式運作。系統會按照批次要求中指定的順序更新。批次更新中的更新會以不可分割的形式套用。也就是說,如果批次中的任何要求失敗,整個更新作業就會失敗,且不會套用任何 (可能相依的) 變更。標籤維持不變。

如果更新成功,您必須先發布產生的草稿修訂版本,才能將變更套用至任何雲端硬碟項目。

更新標籤物件

標籤包含許多其他可更新的物件類型,例如:

  • 標籤屬性
  • 欄位和欄位類型
  • 選項選擇和選項選擇屬性

這些是眾多物件中的一部分,可控制標籤的外觀和運作方式。

作業類別

labels.delta 方法支援的作業可概略分為下列類別:

類別 說明
建立新增物件。
更新更新物件的特定屬性。
啟用啟用物件。
停用停用物件。
刪除移除物件。

下一節會使用這些類別,說明特定作業的行為。

更新要求

labels.delta 方法會採用一或多個 Request 物件,每個物件都會指定要執行的單一要求類型。要求類型有很多種,以下是各類要求,並依不同類別分組。

要求類型
標籤屬性
更新 UpdateLabelPropertiesRequest
欄位
建立 CreateFieldRequest
更新 UpdateFieldPropertiesRequest
UpdateFieldTypeRequest
啟用 EnableFieldRequest
停用 DisableFieldRequest
刪除 DeleteFieldRequest
選取選項
建立 CreateSelectionChoiceRequest
更新 UpdateSelectionChoicePropertiesRequest
啟用 EnableSelectionChoiceRequest
停用 DisableSelectionChoiceRequest
刪除 DeleteSelectionChoiceRequest

欄位遮罩

許多「更新」和「停用」類型的要求都需要FieldMask。 這是以半形逗號分隔的欄位清單,列出您要更新的欄位,其他欄位則維持不變。遮罩為必填欄位,確保只有您要編輯的欄位會更新。您必須至少指定一個欄位。

範例

如要更新標籤,請在 labels 集合上使用 delta 方法。

您也必須指定:

  • useAdminAccesstrue使用者的管理員憑證。伺服器會先驗證使用者是否為標籤管理員,再允許存取。

  • Request:指定標籤的適用更新。

  • 透過 property 方法取得標籤 title

  • 一或多個 Field

  • 代表每個標籤的標籤資源。其中包含資源 NameID,這是標籤的全域專屬 ID。

  • LabelViewLABEL_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 符號,表示有草稿變更,但使用者無法查看。PUBLISHEDhasUnpublishedChanges=true更新後的標籤必須先PUBLISHED,變更才會向使用者顯示。詳情請參閱「標籤生命週期」。