ラベルを更新する

一連の更新リクエストを適用して、新しい下書きリビジョンを作成することで、単一のラベルを更新できます。たとえば、既存のラベルのプロパティ(ラベルの説明)を更新したり、ラベルに新しい Field を追加したりできます。

このメソッドは更新 Request オブジェクトのリストを受け取るため、ラベルの更新はバッチ更新として機能します。更新は、バッチ リクエストで指定された順序で行われます。バッチ更新の更新はアトミックに適用されます。つまり、バッチ内のリクエストが失敗すると、更新全体が失敗し、依存関係のある変更は適用されません。ラベルは変更されません。

更新が成功した場合、変更をドライブ アイテムで使用する前に、結果の下書きリビジョンを公開する必要があります。

ラベル オブジェクトを更新する

ラベルには、次のような更新可能な他の多くのオブジェクト タイプが含まれます。

  • ラベルのプロパティ
  • フィールドとフィールド タイプ
  • 選択肢と選択肢のプロパティ

これらは、ラベルの外観と動作を制御する多くのオブジェクトの一部です。

オペレーションのカテゴリ

labels.delta メソッドでサポートされているオペレーションは、次のカテゴリに分類できます。

カテゴリ 説明
作成オブジェクトを追加します。
更新オブジェクトの特定のプロパティを更新します。
有効にするオブジェクトを有効にします。
無効にするオブジェクトを無効にします。
削除オブジェクトを削除します。

これらのカテゴリは、次のセクションで特定のオペレーションの動作を説明するために使用されます。

更新リクエスト

labels.delta メソッドは、1 つ以上の Request オブジェクトを受け取って動作します。各オブジェクトは、実行するリクエストのタイプを 1 つ指定します。リクエストにはさまざまな種類があります。リクエストの種類をさまざまなカテゴリに分類した内訳は次のとおりです。

リクエストの種類
ラベルのプロパティ
更新 UpdateLabelPropertiesRequest
フィールド
作成 CreateFieldRequest
更新 UpdateFieldPropertiesRequest
UpdateFieldTypeRequest
有効にする EnableFieldRequest
無効にする DisableFieldRequest
削除 DeleteFieldRequest
選択肢
作成 CreateSelectionChoiceRequest
更新 UpdateSelectionChoicePropertiesRequest
有効にする EnableSelectionChoiceRequest
無効にする DisableSelectionChoiceRequest
削除 DeleteSelectionChoiceRequest

フィールド マスク

「更新」タイプと「無効化」タイプの多くのリクエストには FieldMask が必要です。これは、他のフィールドを変更せずに更新するフィールドのカンマ区切りリストです。マスクは、編集するフィールドのみが更新されるようにするために必要です。少なくとも 1 つのフィールドを指定する必要があります。

ラベルを更新するには、labels コレクションの delta メソッドを使用します。

また、次の指定も必要です。

  • useAdminAccess は、ユーザーの管理者認証情報を使用する true です。サーバーは、アクセスを許可する前に、ユーザーがラベルの管理者であることを確認します。

  • ラベルに適用する更新を指定する Request

  • property メソッドを介したラベル title

  • 1 つ以上の Field

  • すべてのラベルを表すラベル リソース。これには、リソース NameID(ラベルのグローバルに一意の識別子)が含まれます。

  • 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 がインクリメントされ、ラベルが下書きラベルとしてデータベースに保存されます。ラベルには、PUBLISHEDStatehasUnpublishedChanges=true であり、下書きの変更があるものの、ユーザーは利用できないことを意味します。変更がユーザーに表示される前に、更新されたラベルが PUBLISHED になっている必要があります。詳細については、ラベルのライフサイクルをご覧ください。