一連の更新リクエストを適用して、新しい下書きリビジョンを作成することで、単一のラベルを更新できます。たとえば、既存のラベルのプロパティ(ラベルの説明)を更新したり、ラベルに新しい Field
を追加したりできます。
このメソッドは更新 Request
オブジェクトのリストを受け取るため、ラベルの更新はバッチ更新として機能します。更新は、バッチ リクエストで指定された順序で行われます。バッチ更新の更新はアトミックに適用されます。つまり、バッチ内のリクエストが失敗すると、更新全体が失敗し、依存関係のある変更は適用されません。ラベルは変更されません。
更新が成功した場合、変更をドライブ アイテムで使用する前に、結果の下書きリビジョンを公開する必要があります。
ラベル オブジェクトを更新する
ラベルには、次のような更新可能な他の多くのオブジェクト タイプが含まれます。
- ラベルのプロパティ
- フィールドとフィールド タイプ
- 選択肢と選択肢のプロパティ
これらは、ラベルの外観と動作を制御する多くのオブジェクトの一部です。
オペレーションのカテゴリ
labels.delta
メソッドでサポートされているオペレーションは、次のカテゴリに分類できます。
カテゴリ | 説明 |
---|---|
作成 | オブジェクトを追加します。 |
更新 | オブジェクトの特定のプロパティを更新します。 |
有効にする | オブジェクトを有効にします。 |
無効にする | オブジェクトを無効にします。 |
削除 | オブジェクトを削除します。 |
これらのカテゴリは、次のセクションで特定のオペレーションの動作を説明するために使用されます。
更新リクエスト
labels.delta
メソッドは、1 つ以上の Request オブジェクトを受け取って動作します。各オブジェクトは、実行するリクエストのタイプを 1 つ指定します。リクエストにはさまざまな種類があります。リクエストの種類をさまざまなカテゴリに分類した内訳は次のとおりです。
フィールド マスク
「更新」タイプと「無効化」タイプの多くのリクエストには FieldMask
が必要です。これは、他のフィールドを変更せずに更新するフィールドのカンマ区切りリストです。マスクは、編集するフィールドのみが更新されるようにするために必要です。少なくとも 1 つのフィールドを指定する必要があります。
例
ラベルを更新するには、labels
コレクションの delta
メソッドを使用します。
また、次の指定も必要です。
useAdminAccess
は、ユーザーの管理者認証情報を使用するtrue
です。サーバーは、アクセスを許可する前に、ユーザーがラベルの管理者であることを確認します。ラベルに適用する更新を指定する
Request
。property
メソッドを介したラベルtitle
。1 つ以上の
Field
。すべてのラベルを表すラベル リソース。これには、リソース
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 がインクリメントされ、ラベルが下書きラベルとしてデータベースに保存されます。ラベルには、PUBLISHED
の State
が hasUnpublishedChanges=true
であり、下書きの変更があるものの、ユーザーは利用できないことを意味します。変更がユーザーに表示される前に、更新されたラベルが PUBLISHED
になっている必要があります。詳細については、ラベルのライフサイクルをご覧ください。