deleteMetadata()
構文
1DeleteResult[] = metadataConnection.delete(string metadataType, string[] fullNames);使用方法
deleteMetadata() コールは、メタデータを拡張するすべてのコンポーネントの削除に使用します。同一コール内のすべてのコンポーネントは、同じ種類である必要があります。詳細は、「Metadata コンポーネントおよびメタデータ型」を参照してください。
このコールは同期して実行されます。つまり、コールは、操作が完了したときにのみ戻ります。
API バージョン 34.0 以降、このコールで AllOrNoneHeader ヘッダーがサポートされます。デフォルトでは、AllOrNoneHeader が API バージョンで使用されていない場合、このコールでエラーのない一部のレコードを削除できます (AllOrNoneHeader=false に相当)。AllOrNoneHeader が true に設定されている場合、1 つ以上のレコードでエラーが発生するとレコードは削除されません。
バージョン
API バージョン 30.0 以降で利用できます。
ルールとガイドライン
コンポーネントを削除する場合は、次のルールやガイドラインを考慮する必要があります。
- 指定したコンポーネント内の個別のコンポーネントを削除するには、実行するのに十分なアクセス権を使用してクライアントアプリケーションにログインする必要があります。詳細は、『Salesforce オブジェクトリファレンス』の「データアクセスに影響する要素」を参照してください。
- また、このコンポーネントの親コンポーネントにアクセスする権限も必要となる場合があります。
- 参照整合性を確保するために、このコールはカスケード削除をサポートします。親コンポーネントを削除すると、各子コンポーネントが削除可能な場合は、その子コンポーネントは自動的に削除されます。
メタデータコンポーネント削除の基本手順
メタデータコンポーネントを削除するには次のプロセスを使用します。
- 削除するコンポーネントのメタデータ型と、削除する各コンポーネントの fullName を判別します。1 つのコールで削除できるのは同じ型のコンポーネントのみです。完全名は、名前空間プレフィックスが含まれる、listMetadata() コールで返された完全名の 1 つ以上と一致する必要があります。パッケージマニフェストファイルから fullName を取得し、コンポーネントに名前空間プレフィックスがある場合、名前空間プレフィックスを fullName に追加します。namespacePrefix__ComponentName 構文を使用します。たとえば、カスタムオブジェクトコンポーネントが MyCustomObject__c で、名前空間が MyNS の場合、fullName は MyNS__MyCustomObject__c になります。fullName 項目についての詳細は、「Metadata」を参照してください。
-
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 個のプロファイルの配列を送信できますが、両方の種類を混ぜて送信することはできません。 |