ラベルを更新する

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

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

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

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

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

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

以下に、ラベルの外観と動作を制御するオブジェクトの例を示します。

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

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

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

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

更新リクエスト

labels.delta メソッドは、1 つ以上の Request オブジェクトを受け取ります。各オブジェクトには、実行するリクエストの種類が 1 つ指定されています。リクエストにはさまざまな種類があります。リクエストの種類は、さまざまなカテゴリに分類されます。

フィールド マスク

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

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

また、以下も指定する必要があります。

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

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

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

  • 1 つ以上の Field

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

  • LabelViewLABEL_VIEW_FULL で、ラベルレスポンスに適用されるリソースビューを設定します。LABEL_VIEW_FULL は、使用可能なすべてのフィールドを返します。

この例では、ID を使用して正しいラベルを更新します。

PythonNode.js
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()
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 が増分され、ラベルはドラフトラベルとしてデータベースに保存されます。ラベルに PUBLISHEDState が付いています。hasUnpublishedChanges=true は、下書きの変更があることを意味しますが、ユーザーは使用できません。変更がユーザーに表示されるようにするには、更新されたラベルを PUBLISHED にする必要があります。詳細については、ラベルのライフサイクルをご覧ください。