ラベルを更新する

Google ドライブ Labels API を使用して、一連の更新リクエストを適用し、新しい下書きリビジョンを作成することで、単一のラベルを更新できます。たとえば、既存のラベル Properties(基本ラベルの説明)を更新したり、ラベルに新しい Field を追加したりできます。

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

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

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

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

  • ラベル: Properties
  • Field オブジェクトとフィールド タイプ
  • 選択 Choice と選択肢 Properties

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

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

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

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

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

更新リクエスト

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

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

フィールド マスク

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

例

ラベルを更新するには、labels リソースの delta メソッドを使用します。

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

  • useAdminAccess クエリ パラメータは、ユーザーの管理者認証情報を使用するように true に設定されています。アクセスを許可する前に、サーバーはユーザーに必要な分類ラベルの管理管理者権限があることを確認します。

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

  • Properties オブジェクトを介したラベル title。

  • 1 つ以上の Field オブジェクト。

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

  • ラベル レスポンスに適用されるリソースビューを設定する 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 になっている必要があります。詳細については、ラベルのライフサイクルをご覧ください。