ラベルを更新する

一連の更新リクエストを適用することで 1 つのラベルを更新でき、それにより新しい下書きのリビジョンが作成されます。たとえば、既存のラベルのプロパティ(ラベルの説明)を更新したり、ラベルに新しい 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 メソッドを使用します。

次の項目も指定する必要があります。

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

  • ラベルの該当する更新を指定する Request

  • property メソッドによるラベル title

  • 1 つ以上の Field

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

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