更新标签

您可以通过应用一组更新请求来更新单个标签,从而生成新的草稿修订版本。例如,您可以更新现有标签 属性(标签 说明),也可以向标签添加新的 Field

标签更新充当批量更新,因为该方法会接受更新 Request对象的列表。它会按照批量请求中指定的相同顺序进行更新。批量更新中的更新以原子方式应用。也就是说,如果批处理中的任何请求失败,则整个更新都会失败,并且不会应用任何(可能依赖的)更改。标签保持不变。

如果更新成功,则必须先发布生成的草稿修订版本,然后才能将更改用于任何云端硬盘项。

更新标签对象

标签包含许多其他可以更新的对象类型,例如:

  • 标签属性
  • 字段和字段类型
  • 选择项和选择项属性

这些是控制标签外观和操作的众多对象中的一部分。

操作类别

labels.delta 方法支持的以下操作可以分为以下几个大类:

类别 说明
创建添加对象。
更新更新对象的某些属性。
启用启用对象。
停用停用对象。
删除移除对象。

下一部分将使用这些类别来描述特定操作的行为。

更新请求

The labels.delta 方法的工作方式是 接受一个或多个 Request 对象,每个 对象都指定要执行的单个请求类型。请求的种类有很多。下面按不同类别细分了请求类型。

请求类型
标签属性
更新 UpdateLabelPropertiesRequest
字段
创建 CreateFieldRequest
更新 UpdateFieldPropertiesRequest
UpdateFieldTypeRequest
启用 EnableFieldRequest
停用 DisableFieldRequest
删除 DeleteFieldRequest
选择项
创建 CreateSelectionChoiceRequest
更新 UpdateSelectionChoicePropertiesRequest
启用 EnableSelectionChoiceRequest
停用 DisableSelectionChoiceRequest
删除 DeleteSelectionChoiceRequest

字段掩码

许多“更新”和“停用”类型的请求都需要 FieldMask。 这是一个英文逗号分隔的字段列表,您可以在更新这些字段的同时,让其他字段保持不变。必须使用掩码,以确保仅更新您要修改的字段。您必须指定至少一个字段。

示例

如需更新标签,请对 labels集合使用 delta方法。

您还必须指定:

  • useAdminAccesstrue,以使用用户的管理员凭据。服务器会先验证用户是否为标签的管理员,然后再允许访问。

  • 一个 Request,用于 指定对标签的适用更新。

  • 通过 property方法指定的标签title

  • 一个或多个 Field

  • 一个 Label 资源 ,用于表示每个标签。它包含资源 NameID,后者是标签的全局唯一标识符。

  • 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 会递增,并且标签会作为草稿标签存储在数据库中。标签的 StatePUBLISHED,且 hasUnpublishedChanges=true,这意味着存在草稿更改,但用户无法使用这些更改。必须先将更新后的标签设为 PUBLISHED,然后用户才能看到更改。如需了解详情,请参阅标签 生命周期