更新标签

您可以应用一组更新请求来生成新的草稿修订版本,从而更新单个标签。例如,您可以更新现有标签属性(标签说明),也可以向标签中添加新的 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,这是标签的全局唯一标识符。

  • 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 会递增,并且标签作为草稿标签存储在数据库中。此标签的 StatePUBLISHEDhasUnpublishedChanges=true,表示有草稿更改,但用户无法查看这些更改。更新后的标签必须处于 PUBLISHED 状态,用户才能看到更改。如需了解详情,请参阅标签生命周期