詳細情報:
Unarchive Apex
プログラムで特定の検索条件に基づいてアーカイブアプリケーションのレコードをアーカイブ解除し、要求に一致する検索結果を取得します。
レコードをアーカイブ解除すると、ルートレコードと子レコードの階層ツリー全体がアーカイブ解除されます。
Apex を介したアーカイブ要求は、組織ごとに 1 時間あたり 50 件に制限されます。
この制限を超えると、HTTP 状況コード 429 を受信します。
前提条件
[アーカイブ] [アーカイブを有効化] を有効にして、アーカイブ アプリケーションまたは Apex からレコードをアーカイブ解除します。アーカイブ解除権限が 1 つだけ必要な場合は、次のいずれかのカスタム権限を有効にして、手動でカスタム権限セットまたはプロファイルに割り当てます。
- アーカイブ解除: アーカイブアプリケーションのレコードのみをアーカイブ解除する権限。
- Archive Unarchive SDK: Archive SDK を介したレコードのアーカイブ解除のみを許可します。
Apex 関数のアーカイブ解除
アーカイブ解除要求ごとに 1 つのオブジェクトを検索し、最大 6 個の検索条件を検索に適用します。
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters, DateRange dateRange)
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters)Apexパラメータ
- sObjectName
- Apex によって照会されるオブジェクト。このパラメーターは必須です。
- 検索条件
- 項目条件に基づいて検索結果を絞り込みます。このパラメーターは必須です。
- 項目名: 絞り込みの基準となる項目 (
Name、CreatedDateなど)。 - 値または値のリスト: 照合する特定の値。値のリストを使用する場合、Apex データクエリはそれらを
OR演算子と組み合わせます。
- 項目名: 絞り込みの基準となる項目 (
- 日付条件
- 日付に基づいて検索するには、
DateRangeパラメータと必要な検索条件を使用します。DateRangeは、ArchiveDate、CreatedDate、ModifiedDateなどの項目でレコードを絞り込みます。このパラメーターは省略可能です。日付検索条件のおすすめ:- アーカイブ日に基づいて検索する
archive_date日フィールドを追加します。 - Apex 日付形式 (MM/DD/YYYY) を使用します。
- アーカイブ日に基づいて検索する
返される値
戻り値は ArchiverAccessorResponse です。
- 実行されたアーカイブ解除操作の要求 ID
- 検索で取得されたレコードの合計数
- 状況コード (エラーを含む)
ArchiverAccessorResponse.getBody(); ⇒ String
ArchiverAccessorResponse.getStatusCode(); ⇒ integer
200 - if the request was accepted
400 - if the request wasn't accepted
ArchiverAccessorResponse.getErrorMessage(); ⇒ StringApex シナリオのアーカイブ解除
ArchiveアプリケーションでのApexプロセスのアーカイブ解除の例を確認します。
シナリオ 1: 一致するレコードが 1,000 件未満見つかり、要求が処理された — 成功
学士号を持つすべての候補者をアーカイブ解除します。
- Apex アーカイブ解除機能は filter
has BA=trueを使用して実行します。 - 候補リストが検索され、アーカイブされたレコードが 1,000 件未満である。
- Unarchive SDK 種別の新しい活動が追加され、すべてのアーカイブ解除項目が入力されます。戻り値は、見つかったレコードの数です。
シナリオ 2: 1,000 件を超える一致レコードが見つかったが、要求が処理されなかった — 失敗
修士号を持つすべての候補者をアーカイブ解除します。
- Apex アーカイブ解除機能は filter
has MA=trueを使用して実行します。 - 候補リストが検索され、1,000 件を超えるアーカイブ済みレコードが検出されます。
- Apex アーカイブ解除プロセスは失敗して終了し、アクティビティは作成されません。戻り値には、見つかったレコード数とエラー「400, scope too large」が含まれます。
シナリオ 3: レコード数が 1,000 件未満で、一致するレコードが見つからなかった場合、要求が処理されなかった場合 — 失敗
修士号を持つすべての候補者をアーカイブ解除します。
- Apex アーカイブ解除機能は filter
has MA=trueを使用して実行します。 - システムによって候補リストが検索され、1,000 件未満のレコードが検出されましたが、一致するレコードは見つかりませんでした。活動は作成されません。戻り値は、見つかったレコードの数です。
シナリオ 4: 一致するレコードが 1,000 件未満見つかり、要求が処理され、部分的に成功 — 成功!
学士号を持つすべての候補者をアーカイブ解除します。
- Apex アーカイブ解除機能は filter
has BA=trueを使用して実行します。 - 候補リストが検索され、1,000 件未満のレコードが検出され、アーカイブが解除されます。
- 検索条件に一致するレコードが正常にアーカイブ解除されました。Unarchive SDK 種別の新しい活動が追加され、すべてのアーカイブ解除項目が入力されます。戻り値は、見つかったレコードの数です。
コードドキュメント
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters, DateRange dateRange)
performUnarchiveSdk(String sObjectName, List<SearchFilter> filters)戻り値: ArchiverAccessorResponse
ArchiverAccessorResponse.getBody(); ⇒ String
ArchiverAccessorResponse.getStatusCode(); ⇒ integer
200 - if the request was accepted
400 - if the request wasn't accepted
ArchiverAccessorResponse.getErrorMessage(); ⇒ Stringコード例
例 1: Own という名前の取引先をアーカイブ解除します。
List<SearchFilter> request = new List<SearchFilter>();
String sObjectName = 'Account';
SearchFilter filter1 = new SearchFilter('Name', 'Own');
request.add(filter1);
ArchiverAccessorResponse res = ArchiverAccessor.performUnarchiveSdk(sObjectName, request);
Map<String, Object> jsonMap = (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
system.debug(jsonMap.get('request_id'));
system.debug(jsonMap.get('total_result_count'));例 2: 検索条件を使用して取引先をアーカイブ解除します。名前は PersonAccount3、日付範囲は過去 150 日間に作成されたレコードです。
// Initialize a list to hold search filters for the archive operation
List<SF_Archive.SearchFilter> request = new List<SF_Archive.SearchFilter>();
// Define the Salesforce object name to perform the operation on
String sObjectName = 'Account';
// Create a search filter based on the 'Name' field with a specific value
SF_Archive.SearchFilter filter1 = new SF_Archive.SearchFilter('Name', 'PersonAccount3');
// Add the created filter to the request list
request.add(filter1);
// Create a date range filter to select records created in the last 150 days
// It calculates the start date by subtracting 150 days from today's date
SF_Archive.dateRange range = new SF_Archive.dateRange('CreatedDate', system.today()-150, system.today());
// Perform the unarchive operation with the specified object name, filters, and date range
// This retrieves records from the archival that match the given criteria
SF_Archive.ArchiverAccessorResponse res = SF_Archive.ArchiverAccessor.performUnarchiveSdk(sObjectName, request, range);
// Deserialize the JSON response body to a Map object to easily access the data
Map<String, Object> jsonMap = (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
// Debug print the request ID and total result count from the response for logging purposes
system.debug(jsonMap.get('request_id'));
system.debug(jsonMap.get('total_result_count'));- Apex のアーカイブ解除のシナリオ
ArchiveアプリケーションでのApexプロセスのアーカイブ解除の例を次に示します。
Apex のアーカイブ解除のシナリオ
ArchiveアプリケーションでのApexプロセスのアーカイブ解除の例を次に示します。
シナリオ 1: 一致するレコードが 1,000 件未満見つかり、要求が処理された — 成功
新しいビジネス要求に従って、顧客が学士号を持つすべての候補者のアーカイブを解除したいと考えています。
-
Apex アーカイブ解除機能は filter
has BA=trueと一緒に使用します。 - 見つかった候補リストのアーカイブされていないレコードが 1,000 件未満である。
-
新しいアクティビティが追加され、新しい typeArchive Apex Unarchive 関数とすべてのアーカイブ解除フィールドが入力されています。
戻り値 = 見つかったレコード数。
シナリオ 2: 1,000 件を超える一致レコードが見つかったが、要求が処理されなかった — 失敗
新しいビジネス要求に従って、顧客は修士号を持つすべての候補者のアーカイブを解除したいと考えています。
-
Apex アーカイブ解除機能は filter
has MA=trueと一緒に使用します。 - 見つかった候補リストには、アーカイブされていないレコードが 1,000 件以上あります。
-
Apex アーカイブ解除プロセスが失敗して終了します。
活動は作成されません。戻り値 = 見つかったレコード数、エラー: 400、範囲が大きすぎます
シナリオ 3: レコード数が 1,000 件未満で、一致するレコードが見つからなかった場合、要求が処理されなかった場合 — 失敗
新しいビジネス要求に従って、顧客は修士号を持つすべての候補者のアーカイブを解除したいと考えています。
-
Apex アーカイブ解除機能は filter
has MA=trueと一緒に使用します。 -
見つかった候補リストのレコード数が 1,000 件未満。一致するレコードが見つかりません。
活動は作成されません。戻り値 = 見つかったレコード数

