この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

createMetadata()

組織に 1 つ以上の新しいメタデータコンポーネントを同期して追加します。

構文

1SaveResult[] = metadatabinding.createMetadata(
2                Metadata[] metadata);

使用方法

createMetadata() コールは、メタデータを拡張するすべてのコンポーネントの作成に使用します。同一コール内のすべてのコンポーネントは、同じ種類である必要があります。詳細は、「Metadata コンポーネントおよびメタデータ型」を参照してください。

このコールは同期して実行されます。つまり、コールは、操作が完了したときにのみ戻ります。

API バージョン 34.0 以降、このコールで AllOrNoneHeader ヘッダーがサポートされます。デフォルトでは、AllOrNoneHeader が API バージョン 34.0 以降で使用されていない場合、このコールでエラーのない一部のレコードを保存できます (AllOrNoneHeader=false に相当)。API バージョン 33.0 以前の場合、デフォルトでは、コール内のどのレコードにもエラーがない場合にのみ、すべてのレコードが保存されます (AllOrNoneHeader=true に相当)。

バージョン

API バージョン 30.0 以降で利用できます。

権限

クライアントアプリケーションは、「メタデータ API 関数を使用したメタデータの変更」権限または「すべてのデータの編集」権限でログインしている必要があります。

メタデータへのアクセス権がユーザーに必要で、データへのアクセス権は必要でない場合、「メタデータ API 関数を使用したメタデータの変更」権限を有効にします。それ以外の場合は、「すべてのデータの編集」権限を有効にします。

メモ

必須項目

作成しているメタデータコンポーネントにより必須項目が決まります。特定のコンポーネントの種類についての詳細は、「Metadata コンポーネントおよびメタデータ型」を参照してください。

有効なデータ値

項目のデータ型に対して有効な値を入力する必要があります。たとえば、整数項目については整数を入力します (英字は不可)。クライアントアプリケーションでは、使用しているプログラム言語および開発ツールに指定されたデータ形式ルールに従ってください (開発ツールは、SOAP メッセージのデータ型の適切な対応付けを処理します)。

文字列値

文字列項目に値を格納する場合、前後にある空白は API が切り捨てます。たとえば、label 項目の値に "MyObject " と入力されると、その値はデータベースに "MyObject" として保存されます。

メタデータコンポーネント作成の基本手順

メタデータコンポーネントを作成する手順は、次のとおりです。

  1. 配列を設計し、作成するコンポーネントを挿入します。すべてのコンポーネントは同じ種類である必要があります。
  2. 引数にコンポーネント配列を渡し、createMetadata() をコールします。
  3. 作成しようとしたコンポーネントごとに SaveResult オブジェクトが返されます。このオブジェクトには、操作が成功したかどうか、作成されたコンポーネントの名前、操作が成功しなかった場合は返されたエラーに関する情報が含まれます。

サンプルコード — Java

1public void createCustomObjectSync() {
2    try {
3        CustomObject co = new CustomObject();
4        String name = "MyCustomObject1";
5        co.setFullName(name + "__c");
6        co.setDeploymentStatus(DeploymentStatus.Deployed);
7        co.setDescription("Created by the Metadata API");
8        co.setEnableActivities(true);
9        co.setLabel(name + " Object");
10        co.setPluralLabel(co.getLabel() + "s");
11        co.setSharingModel(SharingModel.ReadWrite);
12
13        CustomField nf = new CustomField();
14        nf.setType(FieldType.Text);
15        nf.setLabel(co.getFullName() + " Name");
16        co.setNameField(nf);
17
18        SaveResult[] results = metadataConnection
19                .createMetadata(new Metadata[] { co });
20
21        for (SaveResult r : results) {
22            if (r.isSuccess()) {
23                System.out.println("Created component: " + r.getFullName());
24            } else {
25                System.out
26                        .println("Errors were encountered while creating "
27                                + r.getFullName());
28                for (Error e : r.getErrors()) {
29                    System.out.println("Error message: " + e.getMessage());
30                    System.out.println("Status code: " + e.getStatusCode());
31                }
32            }
33        }
34    } catch (ConnectionException ce) {
35        ce.printStackTrace();
36    }
37}

引数

名前 説明
metadata Metadata[] 1 つ以上のメタデータコンポーネントの配列。

上限: 10。(CustomMetadata および CustomApplication の場合のみ、上限�� 200)。

1 つの種類のコンポーネントの配列を送信する必要があります。たとえば、10 個のカスタムオブジェクトの配列または 10 個のプロファイルの配列を送信できますが、両方の種類を混ぜて送信することはできません。

応答

SaveResult[]