> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Change Email データベースアクションスクリプトとテンプレート

> Change Email スクリプトは、ユーザーのメールアドレスまたはメールアドレスの検証ステータスが変更されたときに実行されます。

Change Email スクリプトは、ユーザーのメールアドレスまたはメールアドレスのステータスが変更されたときに実行される関数を実装します。この関数名は `changeEmail` にすることを推奨します。

このスクリプトは [レガシー認証シナリオ](/docs/ja-jp/authenticate/database-connections/custom-db) でのみ使用され、Auth0 と外部データベースの両方で、ユーザーのメールアドレス (および/またはメールアドレスのステータス) を同じ操作内で更新したい場合に必要です。

Change Email スクリプトは、<Tooltip tip="Auth0 Dashboard: サービスを設定するための Auth0 の主要製品。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> では設定できません。このスクリプトを管理するには、Auth0 の <Tooltip tip="Management API: 顧客が管理タスクを実行できるようにする製品。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Management+API">Management API</Tooltip> の [Create a connection](https://auth0.com/docs/api/management/v2#!/Connections/post_connections) または [Update a connection](https://auth0.com/docs/api/management/v2#!/Connections/patch_connections_by_id) エンドポイント、もしくは [Auth0 Deploy CLI](/docs/ja-jp/deploy-monitor/deploy-cli-tool) を使用する必要があります。

<Warning>
  Auth0 Dashboard でカスタムデータベース接続の Database Action Scripts を管理している場合、保存すると Change Email スクリプトは自動的に削除されます。

  Change Email スクリプトが誤って削除されないようにするには、接続の管理時に Auth0 Management API または Auth0 Deploy CLI を使用してください。

  カスタムデータベースでユーザーのメールアドレスを手動で変更した場合は、そのユーザーに対して別途 patch を実行する必要があります。Auth0 がその変更を自動的に検出することはありません。
</Warning>

<div id="changeemail-function">
  ## ChangeEmail 関数
</div>

`changeEmail` 関数では、次の処理を行う必要があります。

* 外部データベース内のユーザーのメールアドレスを更新する。
* 処理が失敗した場合、またはエラーが発生した場合は、エラーを返す。

<div id="definition">
  ### 定義
</div>

`changeEmail`関数は4つのパラメータを受け取り、`callback`コールバック関数を返します。

```js lines theme={null}
changeEmail(email, newEmail, verified, callback): function
```

| パラメータ      | 型        | 説明                                |
| ---------- | -------- | --------------------------------- |
| `email`    | String   | ユーザーの現在のメールアドレス。                  |
| `newEmail` | String   | 外部データベースでユーザーの新しいメールアドレスとして設定する値。 |
| `verified` | Boolean  | 新しいメールアドレスのメール確認ステータス。            |
| `callback` | Function | パイプラインを通じてエラーデータを渡すために使用します。      |

これは、`changeEmail`関数の実装方法を示す擬似的なJavaScriptの例です。

```javascript lines expandable theme={null}
function (email, newEmail, verified, callback) {
  // API呼び出しを準備する
  let options = {
    url: "https://example.com/api/users",
    action: "PATCH",
    body: {
      email: email,
      new_email: newEmail,
      email_verified: verified
    }
  };

  // APIを呼び出す
  send(options, err => {
    // 操作が失敗した場合はコールバックで`false`を返す
    if (err && err.id == "FAIL_CHANGE_EMAIL") {
      return callback(null, false);
    } else if (err) {
      // 不明なエラーが発生した場合はコールバックでエラーを返す
      return callback(new Error("My custom error message."));
    }

    // 操作が成功した場合はコールバックで`true`を返す
    return callback(null, true);
  });
}
```

<div id="callback-function">
  ## コールバック関数
</div>

`callback` 関数は 2 つのパラメータを受け取り、関数を返します。

<div id="definition">
  ### 定義
</div>

```js theme={null}
callback(error, operationResult): function
```

| パラメータ             | 型       | 必須 | 説明                      |
| ----------------- | ------- | -- | ----------------------- |
| `error`           | Object  | 必須 | エラーデータが含まれます。           |
| `operationResult` | Boolean | 任意 | メールアドレスの変更処理の実行結果を示します。 |

<div id="return-a-success">
  ### 成功を返す
</div>

メールアドレスの変更処理が成功した場合は、`callback` コールバック関数を返し、`error` パラメーターに `null`、`operationResult` パラメーターに `true` を渡します。

```js theme={null}
return callback(null, true);
```

<div id="return-a-failure">
  ### 失敗を返す
</div>

メールアドレスの変更処理が失敗した場合は、`callback` コールバック関数を返し、`error` パラメーターには `null`、`operationResult` パラメーターには `false` を渡します。

```js theme={null}
return callback(null, false);
```

<div id="return-an-error">
  ### エラーを返す
</div>

エラーが発生した場合は、`callback` コールバック関数を返し、関連するエラー情報を `error` パラメータに渡します。

```js theme={null}
return callback(new Error("My custom error message."));
```
