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