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

updateMetadata()

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

構文

1SaveResult[] = metadataConnection.updateMetadata(Metadata[] metadata);

使用方法

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

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

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

バージョン

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

権限

クライアントアプリケーションは、「すべてのデータの編集」権限でログインしている必要があります。

必須項目

コンポーネント内のすべての必須項目に値を指定する必要があります。

有効な項目値

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

文字列値

String 項目に値を保存する場合、API は先頭および末尾の空白文字を削除します。たとえば、label 項目の値に "MyObject " と入力されると、その値はデータベースに "MyObject" として保存されます。

メタデータコンポーネント更新の基本手順

メタデータコンポーネントを更新するには、次のプロセスを使用します。
  1. 更新するコンポーネントの配列を作成します。すべてのコンポーネントは同じ種類である必要があります。
  2. updateMetadata() コールを呼び出し、更新するメタデータコンポーネントの配列を渡します。

    更新しようとしたコンポーネントごとに SaveResult オブジェクトが返されます。このオブジェクトには、操作が成功したかどうか、更新されたコンポーネントの名前、操作が成功しなかった場合は返されたエラーに関する情報が含まれます。

サンプルコード —Java

1swfobject.registerObject("clippy.codeblock-1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public void updateCustomObjectSync() {
18    try {
19        CustomObject co = new CustomObject();
20        String name = "MyCustomObject1";
21        co.setFullName(name + "__c");
22        co.setDeploymentStatus(DeploymentStatus.Deployed);
23        co.setDescription("Updated description");
24        co.setLabel(name + " Object Update");
25        co.setPluralLabel(co.getLabel() + "s");
26        co.setSharingModel(SharingModel.ReadWrite);
27
28        // Name field with a type and label is required
29        CustomField cf = new CustomField();
30        cf.setType(FieldType.Text);
31        cf.setLabel(co.getFullName() + " Name");
32        co.setNameField(cf);
33
34        SaveResult[] results = metadataConnection
35                .updateMetadata(new Metadata[] { co });
36
37        for (SaveResult r : results) {
38            if (r.isSuccess()) {
39                System.out.println("Updated component: " + r.getFullName());
40            } else {
41                System.out
42                        .println("Errors were encountered while updating "
43                                + r.getFullName());
44                for (Error e : r.getErrors()) {
45                    System.out.println("Error message: " + e.getMessage());
46                    System.out.println("Status code: " + e.getStatusCode());
47                }
48            }
49        }
50    } catch (ConnectionException ce) {
51        ce.printStackTrace();
52    }
53}

引数

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

上限: 10。(CustomMetadata の場合のみ、上限は 200)。

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

応答

SaveResult[]