Box Developerドキュメント

メタデータテンプレートの更新

ガイド メタデータ メタデータの操作 メタデータテンプレートの更新

メタデータテンプレートの更新

既存のメタデータテンプレートの更新方法を見てみましょう。

メタデータテンプレートの更新は、テンプレート自体を直接変更するのではなく、操作を利用して実行されます。この方法では、ファイルおよびフォルダにすでに適用されている既存のメタデータインスタンスを更新できます。

テンプレートの更新の詳細を確認する

この場合は、Nameフィールドが少しあいまいであることを認識しているため、customerInfoテンプレートのNameフィールドをCompany Nameに変更したいとしましょう。editField操作を使用することで、テンプレートと、ファイルまたはフォルダに適用されている可能性のあるテンプレートのすべてのインスタンスのフィールドのdisplayNameおよびkeyを変更できます。

cURL
curl -X PUT https://api.box.com/2.0/metadata_templates/enterprise/blueprintTemplate/schema \
    -H "authorization: Bearer <ACCESS_TOKEN>" \
    -H "content-type: application/json" \
    -d '[
      {
        "op": "editField",
        "fieldKey": "name",
        "data": {
          "key": "company_name",
          "displayName": "Company Name"
        }
      }
    ]'

.NET
var updates = new List<BoxMetadataTemplateUpdate>()
{
  new BoxMetadataTemplateUpdate()
  {
      Op = MetadataTemplateUpdateOp.editField,
      FieldKey = "name",
      Data = new {
          key = "company_name",
          displayName = "Company Name"
      }
  }
};
BoxMetadataTemplate updatedTemplate = await client.MetadataManager
    .UpdateMetadataTemplate(updates, "enterprise", "customerData");

Java
List<MetadataTemplate.FieldOperation> updates = new ArrayList<MetadataTemplate.FieldOperation>();

String editField = "{\"op\":\"editField\",\"fieldKey\":\"name\",\"data\":{\"key\":\"company_name\",\"displayName\":\"Company Name\"}}";
updates.add(new MetadataTemplate.FieldOperation(editField));

MetadataTemplate.updateMetadataTemplate(api, "enterprise", "customerData", updates);

Python
template = client.metadata_template('enterprise', 'customerData')
updates = template.start_update()
updates.edit_field('name', key='company_name', display_name="Company Name")
template.update_info(updates)

Node
var operations = [
    {
        op: 'editField',
        fieldKey: 'name',
        data: {
            key: 'company_name',
            displayName: "Company Name"
        }
    }
];

client.metadata.updateTemplate(
    'enterprise',
    'customerData',
    operations
).then(template => {
    //..
});

このAPIにより、更新されたメタデータテンプレートが返されます。

{
  "id": "100ac693-a468-4b37-9535-05984b804dc2",
  "type": "metadata_template",
  "templateKey": "customerInfo",
  "scope": "enterprise_34567",
  "displayName": "Customer Info",
  "hidden": false,
  "copyInstanceOnItemCopy": false,
  "fields": [
    {
      "id": "5c6a5906-003b-4654-9deb-472583fc2930",
      "type": "string",
      "key": "company_name",
      "displayName": "Company Name",
      "hidden": false
    },
    {
      "id": "cf3eb5b8-52ef-456c-b175-44354a27e289",
      "type": "enum",
      "key": "industry",
      "displayName": "Industry",
      "options": [
        {"key": "Technology"},
        {"key": "Healthcare"},
        {"key": "Legal"}
      ],
      "hidden": false
    },
    {
      "id": "5c6a5906-4654-9deb-003b-472583fc2930",
      "type": "float",
      "key": "tav",
      "displayName": "Total account value",
      "hidden": false
    }
  ]
}

操作によってテンプレートを更新した場合は、テンプレートのインスタンスもすべて自動的に更新されるという利点があります。この場合、前の手順で作成したインスタンスは次のようになります。

{
  "company_name": "Box",
  "industry": "Technology",
  "tav": 1000000,
  "$id": "01234500-12f1-1234-aa12-b1d234cb567e",
  "$parent": "folder_12345,",
  "$scope": "enterprise_34567",
  "$template": "customerInfo",
  "$type": "customerInfo-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0",
  "$typeVersion": 2,
  "$version": 1,
  "$canEdit": true
}