---
sourceDocument: オーストラリア API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/api-reference

 Release :

    - australia

ft:locale :

    - ja-JP

ft:publication_title :

    - オーストラリア API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# CopyDynamicSchemaAPI: スコープ指定、グローバル

# CopyDynamicSchemaAPI: スコープ指定、グローバル {#ariaid-title1}

* リリースバージョン: Australia
* 
* 更新日 2026年03月12日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：22分

CopyDynamicSchemaAPI クラスは、動的スキーマメタデータを複製するためのメソッドと拡張ポイントを提供します。

CopyDynamicSchemaAPI API は、指定された動的カテゴリを入力として受け入れ、非同期バックグラウンドプロセスを介して関連するすべてのメタデータのコピーに進みます。メタデータには、子カテゴリ、カテゴリメンバー、属性、選択肢セット、選択肢、選択肢の上書きが含まれます。

たとえば、メタデータスキーマは、色、画面サイズ、ネットワーク速度などの製品特性を記述するために使用されます。これらの特性は時間の経過とともに変化します。スキーマは、テクニカルサポートや保証などについて、バージョン間でこれらの変更を追跡するのに役立ちます。CopyDynamicSchemaAPI を使用すると、これらのメタデータのボリュームを 1 回の要求で複製できます。

この API は、セキュリティ上の理由と、ロジックが許可された操作にのみ適用されるようにするために、トランザクション ID と検証キーを提供します。この API はさらに、コピープロセスでスキップするレコードを示すことで、カスタマイズされた命名と部分的な複製を可能にします。コピープロセスのいずれかの部分が失敗した場合、システムは自動的にロールバックを開始し、操作中に加えられたすべての変更を取り消します。

## 要件 {#CopyDynamicSchemaAPI__requirements}

この API にアクセスするには、動的スキーマサポート (com.glide.dynamic_schema) プラグインと、admin または dynamic_schema_writer ロールが必要です。

## 拡張ポイントメソッド {#CopyDynamicSchemaAPI__security}

copyDynamicSchema API は、カスタムロジックを使用して定義する 3 つのオプションの拡張ポイントメソッドを実装する DynamicSchemaCopyController と呼ばれる JavaScript クラスをサポートしています。拡張ポイントを実装する場合は、API メソッドを呼び出す前に、まず拡張ポイントを作成して定義する必要があります。拡張ポイントメソッドのランタイム呼び出しは、スクリプトが runAsync() を呼び出した後に行われます。  
注:  
プリセット (skipAttributes()、skipChoiceSets()、skipChoiceOverrrides()) は、拡張メソッドの動作よりも優先されます。

これらの拡張ポイントメソッドは、コピープロセスが現在のトランザクションに適用されるかどうか、特定のレコードをコピーまたはスキップするかどうか、および新しいコピー名を定義します。これにより、特定のメタデータをスキップするか、アイテムの名前を変更するか、ビジネスルールを適用するか、機密情報のコピーを回避するかを制御できます。

拡張ポイントが指定されていない場合、API はすべてをコピーし ( skipAttributes() などの skip メソッドで API が呼び出されない限り)、コピーされた要素の名前を生成します。  
拡張ポイントのメソッドは次のとおりです。

1. [CopyDynamicSchemaAPI:verifyCopyOperation(文字列 transactionId)](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-verifyCopyOper "getCopyApi() から一致する検証キーを返す前にコピー操作のトランザクション ID を検証するために使用される拡張ポイントメソッド。拡張ポイント実装との関連性を確認します。この拡張ポイントメソッドは、 DynamicSchemaCopyController クラスで提供されます。") - 各主要コンポーネントタイプをコピーする前に呼び出されます。getCopyApi() に提供されたものと同じ検証キーを返す必要があります。メソッドが null を返す場合、この操作では拡張ポイントロジックは無視されます。
2. [CopyDynamicSchemaAPI:shouldCopy(オブジェクト recordData)](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-shouldCopy "ユーザーが特定のレコードをコピーするかどうかを指定できるようにすることで、カスタムコピー操作を作成するための拡張ポイントメソッド。このメソッドは、レコードをコピーする場合は true を返し、スキップする必要がある場合は false を返します。") - false の場合、そのレコードのコピーをスキップします。
3. [CopyDynamicSchemaAPI:getCopyName(オブジェクト recordData)](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-getCopyName "空または null の場合にコピーのカスタム名または自動生成名を許可する拡張ポイントメソッド。この拡張ポイントメソッドは、DynamicSchemaCopyController JavaScript クラスで提供されます。") - コピーのカスタム名または自動生成名を作成します。
{#CopyDynamicSchemaAPI__ol_xgw_wnz_13c}

## CopyDynamicSchemaAPI ワークフロー {#CopyDynamicSchemaAPI__extensionpoints}

次のワークフローは、スクリプトで CopyDynamicSchemaAPI メソッドを呼び出す順序を示しています。  
注:  
拡張ポイントメソッドを実装する場合は、次の API メソッドを呼び出す前に、まず拡張ポイントメソッドを定義する必要があります。

1. [CopyDynamicSchemaAPI - getCopyApi(文字列 categoryToCopy, 文字列 verificationKey)](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-getCopyApi_S_S "コピー操作の実行に使用する CopyDynamicSchemaAPI オブジェクトを作成して返します。このメソッドは、DynamicSchemaCopyController クラスで提供されます。") - 後でコピー操作で使用するオブジェクトを作成し、入力を検証します。
2. [CopyDynamicSchemaAPI - skipAttributes()](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-skipAttributes "ユーザーがコピー操作中に属性のコピーをスキップできるようにするプリセット。")、 [CopyDynamicSchemaAPI:skipChoiceSets()](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-skipChoiceSets "ユーザーがコピー操作中にすべての選択肢セットと選択肢のコピーをスキップできるようにするプリセット。コピーされた選択肢セットまたは選択肢にリンクされるはずのコピーされたすべての要素は、代わりに元の選択肢セットまたは選択肢にリンクされます。")、 [CopyDynamicSchemaAPI - skipChoiceOverrides()](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-skipChoiceOverrides "ユーザーがコピー操作中にすべての選択肢の上書きのコピーをスキップできるようにするプリセット。") - コピー操作中に属性、選択肢、選択セット、および選択肢の上書きをオプションでスキップするプリセット。runAsync() の前に呼び出す必要があります。
3. [CopyDynamicSchemaAPI:getTransactionId()](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-getTransactionId "開始するコピー操作ごとに一意のトランザクション ID を生成して返します。この ID は操作を追跡するために使用され、検証とカスタムロジックのために拡張ポイントに渡されます。 このメソッドは、DynamicSchemaCopyController クラスで提供されます。") - 拡張ポイントがこの特定のコピー操作を認識できるように、トランザクション ID を格納するために使用されます。
4. [CopyDynamicSchemaAPI - runAsync()](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-runAsync "動的スキーマコンポーネントのコピープロセスを開始し、コピー操作を識別するためのトランザクション ID を返します。このメソッドは、DynamicSchemaCopyController クラスで提供されます。") - 非同期コピープロセスを開始し、コピーされる各レコードの拡張ポイントをトリガーします。トランザクション ID を返します。
5. runAsync() の後、システムは以前に定義した拡張ポイントメソッド verifyCopyOperation()、shouldCopy()、getCopyName() を実行します。

いずれかのステップが失敗した場合、API はトランザクション全体をロールバックします。Progress Worker \[sys_progress_worker\] テーブルの \[Name\] 列で、 `動的スキーマのコピー -- <トランザクション ID>` などの名前形式で操作のステータスを監視できます。

## CopyDynamicSchemaAPI - getCopyApi(文字列 categoryToCopy, 文字列 verificationKey) {#ariaid-title2}

コピー操作の実行に使用する CopyDynamicSchemaAPI オブジェクトを作成して返します。このメソッドは、DynamicSchemaCopyController クラスで提供されます。
{#CopyDynSchemaAPI-getCopyApi_S_S__table_rlv_v5c_xgc__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| categoryTocopy | 文字列 | コピー元の特定のカテゴリを一意に識別する名前空間名。 例 `:「tech_store/u_device_specs/u_mobile_devices」` テーブル:ダイナミックカテゴリ \[dynamic_categories\]、(計算済み) 名前空間名列 注: 歯車アイコンを使用して、この列をテーブルビューに手動で追加する必要がある場合があります。 |
| 検証キー | 文字列 | コピー操作を許可するための検証キー。詳細については、「[CopyDynamicSchemaAPI:getTransactionId()](https://servicenow-prod.fluidtopics.net/lbSTMpK0SVo1eJE1gUSprw#CopyDynSchemaAPI-getTransactionId "開始するコピー操作ごとに一意のトランザクション ID を生成して返します。この ID は操作を追跡するために使用され、検証とカスタムロジックのために拡張ポイントに渡されます。 このメソッドは、DynamicSchemaCopyController クラスで提供されます。")」を参照してください。 |
[表 : 1. パラメーター]

{#CopyDynSchemaAPI-getCopyApi_S_S__table_rlv_v5c_xgc} {#CopyDynSchemaAPI-getCopyApi_S_S__table_slv_v5c_xgc__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | トランザクション ID の取得、コピーの実行、またはプリセット戦略の構成に使用される CopyDynamicSchemaAPI オブジェクト。権限がない場合にのみ null を返します。無効な場合、またはカテゴリが見つからない場合は、例外をスローします。 |
[表 : 2. 返される内容]

{#CopyDynSchemaAPI-getCopyApi_S_S__table_slv_v5c_xgc}  
次のスクリプト例は、 getCopyApi() を使用して、既存のカテゴリを複製できる CopyDynamicSchemaAPI オブジェクトを取得する方法を示しています。これを行うために、この例では、ターゲットカテゴリの名前空間名 (`tech_store/u_device_specs`) (`u_mobile_devices` は名前) と検証キー (`verification_key`) を使用して getCopyApi() を呼び出します。

    var api = DynamicSchemaAPI.get().getCopyApi("tech_store/u_device_specs/u_mobile_devices", "verification_key"); 

    api.runAsync();

このスクリプトは CopyDynamicSchemaAPI オブジェクトを返します。出力：

    {CopyDynamicSchemaAPI@13721}

このオブジェクトを使用すると、操作を監視し、必要に応じてプリセットを構成し、追加の copyDynamicSchema API メソッドを使用してコピープロセスを開始できます。

## CopyDynamicSchemaAPI - skipAttributes() {#ariaid-title3}

ユーザーがコピー操作中に属性のコピーをスキップできるようにするプリセット。
{#CopyDynSchemaAPI-skipAttributes__table_zjh_skt_13c__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 3. パラメーター]

{#CopyDynSchemaAPI-skipAttributes__table_zjh_skt_13c} {#CopyDynSchemaAPI-skipAttributes__table_akh_skt_13c__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | 属性を省略した CopyDynamicSchemaAPI オブジェクトを返します。トランザクション ID の取得、コピーの実行、または事前設定された戦略の構成に使用されます。権限がない場合にのみ null を返します。無効な場合、またはカテゴリが見つからない場合は、例外をスローします。 |
[表 : 4. 返される内容]

{#CopyDynSchemaAPI-skipAttributes__table_akh_skt_13c}  
次の例は、 skipAttributes() を使用して属性のコピーをスキップする方法を示しています。カテゴリメンバーは引き続きコピーされますが、属性自体はコピーされないため、元の属性へのリンクはコピーされません。また、属性のみに関連付けられた選択肢や選択肢の上書きは含まれません。

    var api = DynamicSchemaAPI.get().getCopyApi("tech_store/u_device_specs/u_mobile_devices", "verification_key"); 

    api.skipAttributes().runAsync(); 

出力：

    {CopyDynamicSchemaAPI@13721}

## CopyDynamicSchemaAPI - skipChoiceOverrides() {#ariaid-title4}

ユーザーがコピー操作中にすべての選択肢の上書きのコピーをスキップできるようにするプリセット。
{#CopyDynSchemaAPI-skipChoiceOverrides__table_izt_nnt_13c__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 5. パラメーター]

{#CopyDynSchemaAPI-skipChoiceOverrides__table_izt_nnt_13c} {#CopyDynSchemaAPI-skipChoiceOverrides__table_jzt_nnt_13c__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | 選択肢の上書きを省略した CopyDynamicSchemaAPI オブジェクトを返します。トランザクション ID の取得、コピーの実行、または事前設定された戦略の構成に使用されます。権限がない場合にのみ null を返します。無効な場合、またはカテゴリが見つからない場合は、例外をスローします。 |
[表 : 6. 返される内容]

{#CopyDynSchemaAPI-skipChoiceOverrides__table_jzt_nnt_13c}  
次の例は、 skipChoiceOverrides() の使用方法を示しています。このプリセットを適用すると、選択肢の上書きはコピーされません。

    var api = DynamicSchemaAPI.get().getCopyApi("tech_store/u_device_specs/u_mobile_devices", "verification_key"); 

    api.skipChoiceOverrides().runAsync();

出力：

    {CopyDynamicSchemaAPI@13721}

## CopyDynamicSchemaAPI:skipChoiceSets() {#ariaid-title5}

ユーザーがコピー操作中にすべての選択肢セットと選択肢のコピーをスキップできるようにするプリセット。コピーされた選択肢セットまたは選択肢にリンクされるはずのコピーされたすべての要素は、代わりに元の選択肢セットまたは選択肢にリンクされます。
{#CopyDynSchemaAPI-skipChoiceSets__table_pvk_jmt_13c__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 7. パラメーター]

{#CopyDynSchemaAPI-skipChoiceSets__table_pvk_jmt_13c} {#CopyDynSchemaAPI-skipChoiceSets__table_qvk_jmt_13c__entry__2}

| タイプ | 説明 |
|-|-|
| オブジェクト | 選択肢セットと選択肢を省略した CopyDynamicSchemaAPI オブジェクトを返します。トランザクション ID の取得、コピーの実行、または事前設定された戦略の構成に使用されます。権限がない場合にのみ null を返します。無効な場合、またはカテゴリが見つからない場合は、例外をスローします。 |
[表 : 8. 返される内容]

{#CopyDynSchemaAPI-skipChoiceSets__table_qvk_jmt_13c}  
次の例は、 skipChoiceSets() の使用方法を示しています。このプリセットを適用すると、コピー操作で選択肢セットまたは選択肢をスキップします。選択肢の上書きは引き続きコピーされますが、選択肢自体はコピーされないため、元の選択肢にリンクされます。

    var api = DynamicSchemaAPI.get().getCopyApi("tech_store/u_device_specs/u_mobile_devices", "verification_key"); 

    api.skipChoiceSets().runAsync();

出力：

    {CopyDynamicSchemaAPI@13721}

## CopyDynamicSchemaAPI:getTransactionId() {#ariaid-title6}

開始するコピー操作ごとに一意のトランザクション ID を生成して返します。この ID は操作を追跡するために使用され、検証とカスタムロジックのために拡張ポイントに渡されます。 このメソッドは、DynamicSchemaCopyController クラスで提供されます。
トランザクション ID は、カスタムロジックが正しいコピートランザクションにのみ適用されるようにするために、 getCopyName() などの拡張ポイントによって使用されます。この ID をカスタムテーブルに保存して、後で参照したり、他のスクリプトと調整したりすることができます。
{#CopyDynSchemaAPI-getTransactionId__table_vqx_wvc_xgc__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 9. パラメーター]

{#CopyDynSchemaAPI-getTransactionId__table_vqx_wvc_xgc} {#CopyDynSchemaAPI-getTransactionId__table_wqx_wvc_xgc__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | コピー操作を識別するために使用できるトランザクション ID。コピー操作のステータスは、Progress Worker \[sys_progress_worker\] テーブルの \[名前\] 列で確認できます。 命名形式:動的スキーマをコピー:\<トランザクション ID\> |
[表 : 10. 返される内容]

{#CopyDynSchemaAPI-getTransactionId__table_wqx_wvc_xgc}  
次の例は、動的スキーマをコピーする前に getTransactionId() を使用してトランザクション ID を取得して保存する方法を示しています。ユーザーは getTransactionId() を呼び出してトランザクション ID を取得し、カスタムテーブルに格納します。コピープロセス中に拡張ポイント実装が呼び出されると、保存されているトランザクション ID をチェックして、カスタム命名ロジックを提供するか、トランザクションを無視するために null を返すかを判断できます。

    var api = DynamicSchemaAPI.get().getCopyApi("tech_store/u_device_specs/u_mobile_devices", "verification_key"); 
    var id = api.getTransactionId(); 

    var gr = new GlideRecord("u_copy_transactions"); 
    gr.initialize(); 
    gr.setValue("u_transaction_id", id); 
    gr.insert(); 

    api.runAsync(); 

出力は一意のトランザクション ID を返します。

    "9a8e0f92ff5032103c16ffffffffff82"

## CopyDynamicSchemaAPI - runAsync() {#ariaid-title7}

動的スキーマコンポーネントのコピープロセスを開始し、コピー操作を識別するためのトランザクション ID を返します。このメソッドは、DynamicSchemaCopyController クラスで提供されます。
runAsync() メソッドは、コピー操作をバックグラウンドで非同期に実行し、コピー プロセス中に拡張ポイント getCopyName()、shouldCopy()、および verifyCopyOperation() を呼び出して、名前付けとセキュリティをカスタマイズします。コピー操作のステータスを表示するには、Progress Worker \[sys_progress_worker\] テーブルの \[名前\] 列の「動 `的スキーマのコピー - <トランザクション ID>`」の命名形式を参照してください。

コピーの一部が失敗した場合、API はデータの一貫性を維持するためにすべての変更を自動的にロールバックします。
{#CopyDynSchemaAPI-runAsync__table_hfr_2wc_xgc__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 11. パラメーター]

{#CopyDynSchemaAPI-runAsync__table_hfr_2wc_xgc} {#CopyDynSchemaAPI-runAsync__table_ifr_2wc_xgc__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | コピー操作を識別するために使用されるトランザクション ID。コピープロセスは非同期ですが、コピー操作のステータスは、Progress Worker \[sys_progress_worker\] テーブルの \[名前\] 列で、名前形式が `[動的スキーマのコピー - <トランザクション ID>` で確認できます。 コピー動作は、拡張ポイントの実装とスキップメソッドのプリセットによって異なります。コンポーネントは、 skip() メソッドのプリセットが呼び出された場合、または拡張ポイント shouldCopy() が false を返す場合にのみスキップされます。 |
[表 : 12. 返される内容]

{#CopyDynSchemaAPI-runAsync__table_ifr_2wc_xgc}  
次のスクリプト例は、 runAsync() メソッドを使用して動的スキーマコピー操作を開始する方法を示しています。 `tech_store/u_device_specs/u_mobile_devices` はコピーするカテゴリの一意の名前で、 `verification_key` は検証キーです。コピー API インスタンスを取得し、拡張ポイント参照用のトランザクション ID を格納した後、 runAsync() はすべてのスキーマ コンポーネント (カテゴリ、カテゴリ メンバー、属性、選択セット、選択肢、および選択肢の上書き) のコピー プロセスを開始します。

    var api = DynamicSchemaAPI.get().getCopyApi("tech_store/u_device_specs/u_mobile_devices", "verification_key"); 

    api.runAsync();

トランザクション ID を出力します。

    "9a8e0f92ff5032103c16ffffffffff82"

## CopyDynamicSchemaAPI:getCopyName(オブジェクト recordData) {#ariaid-title8}

空または null の場合にコピーのカスタム名または自動生成名を許可する拡張ポイントメソッド。この拡張ポイントメソッドは、DynamicSchemaCopyController JavaScript クラスで提供されます。
{#CopyDynSchemaAPI-getCopyName__table_fb1_1fz_13c__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| recordData | オブジェクト | レコードメタデータを含むオブジェクト: * `名前`:レコード名 * `namespaced_name`:名前空間 + レコード名 * `table_name`:テーブル名 * `sys_id`:一意のシステム ID {#CopyDynSchemaAPI-getCopyName__ul_zbq_gfz_13c} |
[表 : 13. パラメーター]

{#CopyDynSchemaAPI-getCopyName__table_fb1_1fz_13c} {#CopyDynSchemaAPI-getCopyName__table_gb1_1fz_13c__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | このコピーの提案された名前。 考えられるエラー: * 名前は 60 文字を超えています。 * コピー名は既に存在します。 |
| 文字列 (空または null) | このコピーに対して自動生成された名前。 |
[表 : 14. 返される内容]

{#CopyDynSchemaAPI-getCopyName__table_gb1_1fz_13c}  
この例は、拡張ポイントの実装を示しています。shouldCopy() メソッドが true を返してレコードをコピーするユーザーの意図を確認した後、ユーザーは getCopyName() を定義してコピーのカスタム名を指定します。たとえば、ユーザーは、元の名前に「_copy」を選択したラベルとして付加したり、システムで名前を自動的に生成したりできます。

    var DynamicSchemaCopyController = Class.create(); 
    DynamicSchemaCopyController.prototype = { 
     
        initialize: function() {}, 

        verifyCopyOperation: function(transactionId) { 
            var transactionIdExist = new GlideRecord('u_copy_transactions'); 
            transactionIdExist.addQuery('u_transaction_id', transactionId); 
            transactionIdExist.query(); 
     
            if (transactionIdExist.hasNext()) { 
                return 'verification_key'; 
            } 
            else { 
                return null; 
            } 
        }, 
     
        shouldCopy: function(recordData) { 
            var namespacedNameSkip = [ 
                'tech_store/u_device_specs/u_phone', 
                'tech_store/u_device_specs/u_storage' 
            ]; 
            var recordNamespacedName = String(recordData.get('namespaced_name')); 
            if (namespacedNameSkip.includes(recordNamespacedName)) { 
                return false; 
            } 
            return true; 
        }, 
     
        getCopyName: function(recordData) { 
            return String(recordData.get('name') + '_copy'); 
        }, 
     
        type: 'DynamicSchemaCopyController' 

    };

出力：

    Record's name + "_copy"

## CopyDynamicSchemaAPI:shouldCopy(オブジェクト recordData) {#ariaid-title9}

ユーザーが特定のレコードをコピーするかどうかを指定できるようにすることで、カスタムコピー操作を作成するための拡張ポイントメソッド。このメソッドは、レコードをコピーする場合は true を返し、スキップする必要がある場合は false を返します。
この拡張ポイントメソッドは DynamicSchemaCopyController クラスで提供され、ユーザーが要件に基づいてコピープロセスに含めるレコードを柔軟に制御できます。
{#CopyDynSchemaAPI-shouldCopy__table_z44_mdz_13c__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| recordData | Java ハッシュマップ | レコードメタデータを含む Java HashMap: * 名前:レコード名 * namespaced_name:名前空間 + レコード名 * table_name:テーブル名 * sys_id:一意のシステム ID |
[表 : 15. パラメーター]

{#CopyDynSchemaAPI-shouldCopy__table_z44_mdz_13c} {#CopyDynSchemaAPI-shouldCopy__table_ap4_mdz_13c__entry__2}

| タイプ | 説明 |
|-|-|
| ブール | コピーを作成する必要がある場合は true を返し、それ以外の場合は false を返します。 コピーを作成するかどうかを示すフラグ。 有効な値： * true:コピーを作成します。 * false:コピーを作成しません。 {#CopyDynSchemaAPI-shouldCopy__ul_lw2_x11_53c} |
[表 : 16. 返される内容]

{#CopyDynSchemaAPI-shouldCopy__table_ap4_mdz_13c}  
この例は、 shouldCopy() 拡張ポイントの実装を示しています。検証が完了すると、ユーザーはカスタムコピーロジックを実装できるようになり、名前、namespaced_name、テーブル、sys_idなどの基準に従ってレコードをスキップできるようになります。

    var DynamicSchemaCopyController = Class.create(); DynamicSchemaCopyController.prototype = { 
     
        initialize: function() {}, 

        verifyCopyOperation: function(transactionId) { 
            var transactionIdExist = new GlideRecord('u_copy_transactions'); 
            transactionIdExist.addQuery('u_transaction_id', transactionId); 
            transactionIdExist.query(); 
     
            if (transactionIdExist.hasNext()) { 
                return 'verification_key'; 
            } 
            else { 
                return null; 
            } 
        }, 
     
        shouldCopy: function(recordData) { 
            var namespacedNameSkip = [ 
                'tech_store/u_device_specs/u_phone', 
                'tech_store/u_device_specs/u_storage' 
            ]; 
            var recordNamespacedName = String(recordData.get('namespaced_name')); 
            if (namespacedNameSkip.includes(recordNamespacedName)) { 
                return false; 
            } 
            return true; 
        }, 
     
        getCopyName: function(recordData) { 
            return String(recordData.get('name') + '_copy'); 
        }, 
     
        type: 'DynamicSchemaCopyController' 

    };

namespaced_name が `tech_store/u_device_specs/u_phone` または `tech_store/u_device_specs/u_storage` でない場合は `true` を返します。

## CopyDynamicSchemaAPI:verifyCopyOperation(文字列 transactionId) {#ariaid-title10}

getCopyApi() から一致する検証キーを返す前にコピー操作のトランザクション ID を検証するために使用される拡張ポイントメソッド。拡張ポイント実装との関連性を確認します。この拡張ポイントメソッドは、 DynamicSchemaCopyController クラスで提供されます。
{#CopyDynSchemaAPI-verifyCopyOper__table_q4k_qcz_13c__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| トランザクション ID | 文字列 | 各コピー操作を識別する一意の文字列。 |
[表 : 17. パラメーター]

{#CopyDynSchemaAPI-verifyCopyOper__table_q4k_qcz_13c} {#CopyDynSchemaAPI-verifyCopyOper__table_r4k_qcz_13c__entry__2}

| タイプ | 説明 |
|-|-|
| 文字列 | getCopyApi() からの検証キー。トランザクション ID がこの拡張ポイントに関連しない場合は null。 |
[表 : 18. 返される内容]

{#CopyDynSchemaAPI-verifyCopyOper__table_r4k_qcz_13c}  
この例は、 verifyCopyOperation() 拡張ポイントの実装を示しています。ユーザーは、検証キーを返す前に、コピー操作に関連付けられたトランザクション ID を確認する必要があります。検証キーは、 getCopyApi() メソッドの引数として指定された値に対応している必要があります。

    var DynamicSchemaCopyController = Class.create(); DynamicSchemaCopyController.prototype = { 
     
        initialize: function() {}, 

        verifyCopyOperation: function(transactionId) { 
            var transactionIdExist = new GlideRecord('u_copy_transactions'); 
            transactionIdExist.addQuery('u_transaction_id', transactionId); 
            transactionIdExist.query(); 
     
            if (transactionIdExist.hasNext()) { 
                return 'verification_key'; 
            } 
            else { 
                return null; 
            } 
        }, 
     
        shouldCopy: function(recordData) { 
            var namespacedNameSkip = [ 
                'tech_store/u_device_specs/u_phone', 
                'tech_store/u_device_specs/u_storage' 
            ]; 
            var recordNamespacedName = String(recordData.get('namespaced_name')); 
            if (namespacedNameSkip.includes(recordNamespacedName)) { 
                return false; 
            } 
            return true; 
        }, 
     
        getCopyName: function(recordData) { 
            return String(recordData.get('name') + '_copy'); 
        }, 
     
        type: 'DynamicSchemaCopyController' 

    }; 

出力：

    "verification_key"


