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

deleteMetadata()

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

構文

1DeleteResult[] = metadataConnection.delete(string metadataType, string[] fullNames);

使用方法

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

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

API バージョン 34.0 以降、このコールで AllOrNoneHeader ヘッダーがサポートされます。デフォルトでは、AllOrNoneHeader が API バージョンで使用されていない場合、このコールでエラーのない一部のレコードを削除できます (AllOrNoneHeader=false に相当)。AllOrNoneHeadertrue に設定されている場合、1 つ以上のレコードでエラーが発生するとレコードは削除されません。

バージョン

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

権限

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

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

メモ

ルールとガイドライン

コンポーネントを削除する場合は、次のルールやガイドラインを考慮する必要があります。

  • 指定したコンポーネント内の個別のコンポーネントを削除するには、実行するのに十分なアクセス権を使用してクライアントアプリケーションにログインする必要があります。詳細は、『Salesforce オブジェクトリファレンス』「データアクセスに影響する要素」を参照してください。
  • また、このコンポーネントの親コンポーネントにアクセスする権限も必要となる場合があります。
  • 参照整合性を確保するために、このコールはカスケード削除をサポートします。親コンポーネントを削除すると、各子コンポーネントが削除可能な場合は、その子コンポーネントは自動的に削除されます。

メタデータコンポーネント削除の基本手順

メタデータコンポーネントを削除するには次のプロセスを使用します。

  1. 削除するコンポーネントのメタデータ型と、削除する各コンポーネントの fullName を判別します。1 つのコールで削除できるのは同じ型のコンポーネントのみです。完全名は、名前空間プレフィックスが含まれる、listMetadata() コールで返された完全名の 1 つ以上と一致する必要があります。パッケージマニフェストファイルから fullName を取得し、コンポーネントに名前空間プレフィックスがある場合、名前空間プレフィックスを fullName に追加します。namespacePrefix__ComponentName 構文を使用します。たとえば、カスタムオブジェクトコンポーネントが MyCustomObject__c で、名前空間が MyNS の場合、fullNameMyNS__MyCustomObject__c になります。fullName 項目についての詳細は、「Metadata」を参照してください。
  2. deleteMetadata() コールを呼び出します。最初の引数で、メタデータ型の名前を渡します。2 つ目の引数で、削除するコンポーネントに対応する完全名の配列を渡します。

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

サンプルコード — Java

1public void deleteCustomObjectSync() {
2    try {
3        DeleteResult[] results = metadataConnection.deleteMetadata(
4                "CustomObject", new String[] { "MyCustomObject1__c",
5                        "MyCustomObject2__c" });
6        for (DeleteResult r : results) {
7            if (r.isSuccess()) {
8                System.out.println("Deleted component: " + r.getFullName());
9            } else {
10                System.out
11                        .println("Errors were encountered while deleting "
12                                + r.getFullName());
13                for (Error e : r.getErrors()) {
14                    System.out.println("Error message: " + e.getMessage());
15                    System.out.println("Status code: " + e.getStatusCode());
16                }
17            }
18        }
19    } catch (ConnectionException ce) {
20        ce.printStackTrace();
21    }
22}

引数

名前 説明
metadataType string 削除するコンポーネントのメタデータ型。
fullNames string[] 削除するコンポーネントの完全名の配列。

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

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

応答

DeleteResult[]