您可以通过应用一组更新请求来更新单个标签,从而生成新的草稿修订版本。例如,您可以更新现有标签
属性(标签
说明),也可以向标签添加新的
Field。
标签更新充当批量更新,因为该方法会接受更新
Request对象的列表。它会按照批量请求中指定的相同顺序进行更新。批量更新中的更新以原子方式应用。也就是说,如果批处理中的任何请求失败,则整个更新都会失败,并且不会应用任何(可能依赖的)更改。标签保持不变。
如果更新成功,则必须先发布生成的草稿修订版本,然后才能将更改用于任何云端硬盘项。
更新标签对象
标签包含许多其他可以更新的对象类型,例如:
- 标签属性
- 字段和字段类型
- 选择项和选择项属性
这些是控制标签外观和操作的众多对象中的一部分。
操作类别
labels.delta 方法支持的以下操作可以分为以下几个大类:
| 类别 | 说明 |
|---|---|
| 创建 | 添加对象。 |
| 更新 | 更新对象的某些属性。 |
| 启用 | 启用对象。 |
| 停用 | 停用对象。 |
| 删除 | 移除对象。 |
下一部分将使用这些类别来描述特定操作的行为。
更新请求
The labels.delta 方法的工作方式是
接受一个或多个
Request 对象,每个
对象都指定要执行的单个请求类型。请求的种类有很多。下面按不同类别细分了请求类型。
字段掩码
许多“更新”和“停用”类型的请求都需要
FieldMask。
这是一个英文逗号分隔的字段列表,您可以在更新这些字段的同时,让其他字段保持不变。必须使用掩码,以确保仅更新您要修改的字段。您必须指定至少一个字段。
示例
您还必须指定:
useAdminAccess为true,以使用用户的管理员凭据。服务器会先验证用户是否为标签的管理员,然后再允许访问。一个
Request,用于 指定对标签的适用更新。通过
property方法指定的标签title。一个或多个
Field。一个 Label 资源 ,用于表示每个标签。它包含资源
Name和ID,后者是标签的全局唯一标识符。LabelView为LABEL_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为PUBLISHED,且
hasUnpublishedChanges=true,这意味着存在草稿更改,但用户无法使用这些更改。必须先将更新后的标签设为
PUBLISHED,然后用户才能看到更改。如需了解详情,请参阅标签
生命周期。