更新标签

您可以使用 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 资源。它包含 nameid,后者是标签的全局唯一标识符。

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