> ## 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 スクリプトは、ユーザーのメールアドレスまたはメールアドレスの確認ステータスが変更されたときに、定義された関数を実行します。この関数の名前は `changeEmail` にすることを推奨します。

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

Change Email スクリプトは、<Tooltip tip="Auth0 Dashboard: サービスを設定するための Auth0 の主要な製品です。" cta="用語集を表示" href="/ja/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> では設定できません。このスクリプトを管理するには、Auth0 の <Tooltip tip="Management API: 顧客が管理タスクを実行できるようにする製品です。" cta="用語集を表示" href="/ja/docs/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](/ja/docs/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 | エラーデータをパイプラインに渡すために使用します。         |

<div id="example">
  ### 例
</div>

これは、`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 lines theme={null}
callback(error, operationResult): function
```

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

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

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

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

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

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

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

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

エラーが発生した場合は、関連するエラー情報を `error` パラメーターとして渡して `callback` 関数を呼び出します。

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

<div id="learn-more">
  ## 詳細情報
</div>

* [パスワード変更用スクリプトテンプレート](/ja/docs/authenticate/database-connections/custom-db/templates/change-password)
* [作成用スクリプトテンプレート](/ja/docs/authenticate/database-connections/custom-db/templates/create)
* [削除用スクリプトテンプレート](/ja/docs/authenticate/database-connections/custom-db/templates/delete)
* [ユーザー取得用スクリプトテンプレート](/ja/docs/authenticate/database-connections/custom-db/templates/get-user)
* [ログイン用スクリプトテンプレート](/ja/docs/authenticate/database-connections/custom-db/templates/login)
* [検証用スクリプトテンプレート](/ja/docs/authenticate/database-connections/custom-db/templates/verify)
