更新標籤

您可以使用 Google 雲端硬碟 Labels API,套用一組更新要求,產生新的草稿修訂版本,藉此更新單一標籤。舉例來說,您可以更新現有標籤 Properties (基本標籤說明),也可以在標籤中新增 Field。

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

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

更新標籤物件

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

  • 標籤:Properties
  • Field 物件和欄位類型
  • 「選取」Choice和「選取選項」Properties

這些是控制標籤外觀和運作方式的眾多物件之一。

作業類別

labels 資源的 delta 方法支援下列作業,可概略分成以下類別:

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

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

更新要求

delta 方法會採用一或多個 Request 物件,每個物件都會指定要執行的單一要求類型。要求種類繁多,以下是按不同類別分組的要求類型細目。

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

欄位遮罩

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

範例

如要更新標籤,請使用 labels 資源的 delta 方法。

此外,您還必須指定:

  • useAdminAccess 查詢參數設為 true,即可使用使用者的管理員憑證。伺服器會先驗證使用者是否具備必要的管理分類標籤管理員權限,再允許存取。

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

  • 透過 Properties 物件的標籤 title。

  • 一或多個 Field 物件。

  • 代表標籤的 labels 資源。其中包含 name 和 id,這是標籤的全域專屬 ID。

  • LabelView 物件 (如 LABEL_VIEW_FULL),用於設定套用至標籤回應的資源檢視畫面。LABEL_VIEW_FULL 會傳回所有可能的欄位。

以下程式碼範例說明如何使用標籤的 id 更新正確標籤:

Python

body = {
    'useAdminAccess': True,
    'requests': [
        {
            'updateLabel': {
                'properties': {
                    'title': 'TITLE'
                },
                'updateMask': 'title'
            }
        },
        {
            'createField': {
                'field': {
                    'properties': {
                        'displayName': 'DISPLAY_NAME'
                    },
                    'textOptions': {}
                }
            }
        }
    ],
    'view': 'LABEL_VIEW_FULL'
}

response = service.labels().delta(
    body=body,
    name='labels/ID'
).execute()

Node.js

var body = {
  'useAdminAccess': true,
  'requests': [
    {
      'updateLabel': {
        'properties': {
          'title': 'TITLE'
        },
        'updateMask': 'title'
      }
    },
    {
      'createField': {
        'field': {
          'properties': {
            'displayName': 'DISPLAY_NAME'
          },
          'textOptions': {}
        }
      }
    }
  ],
  'view': 'LABEL_VIEW_FULL'
};

service.labels.delta({
  name: 'labels/ID',
  requestBody: body
}, (err, res) => {
  if (err) return console.error('The API returned an error: ' + err);
  console.log(res);
});

更改下列內容:

  • TITLE:標籤的名稱。
  • DISPLAY_NAME:欄位的顯示名稱。
  • ID:標籤 ID。

標籤、欄位或選項更新後,標籤的修訂版本 ID 會遞增,且標籤會以草稿標籤的形式儲存在資料庫中。標籤具有 State 的 PUBLISHED hasUnpublishedChanges 設為 true 的意義,表示有草稿變更,但使用者無法存取。更新後的標籤必須先PUBLISHED,變更才會向使用者顯示。詳情請參閱「標籤生命週期」。