この記事の目次
SalesforceのsetPasswordとは?
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/356a192b7913b04c54574d18c28d46e6395428ab/d45abd38-4325-4bdf-b43b-1b80b7ed06f0.jpg)
SalesforceのsetPasswordについての概要
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/356a192b7913b04c54574d18c28d46e6395428ab/4979dc10-7d78-4971-af31-dacf8eeffeed.jpg)
SetPasswordResult setPasswordResult = connection.setPassword(ID userID, string password);
ユーザーやセルフサービスユーザーのパスワード設定にsetPassword()を使用してパスワードを変更する方法です。例えば、クライアントとなるアプリケーションが、各ユーザーのパスワードを指定してもらいます。
システム管理者がユーザーパスワード変更のためにsetPassword()を使用するのです。
Javaを使用したサンプルコード
以下が、Javaを使用したサンプルコードです。ユーザーIDをパスワードパラメータで受け取って、指定のユーザーパスワードをsetPassword()で設定したサンプルです。public void doSetPassword(String userId, String newPasswd) {
try {
SetPasswordResult result = connection.setPassword(userId, newPasswd);
System.out.println("The password for user ID " + userId + " changed to "
+ newPasswd);
} catch (ConnectionException ce) {
ce.printStackTrace();
}
}
C#を使用したサンプルコード
C#を使用したサンプルコードになります。ユーザーIDをパスワードパラメータで受け取って、指定のユーザーパスワードをsetPassword()で設定したサンプルです。public void doSetPassword(String userId, String newPasswd)
{
try
{
SetPasswordResult result = binding.setPassword(userId, newPasswd);
Console.WriteLine("The password for user ID " + userId + " changed to "
+ newPasswd);
}
catch (SoapException e)
{
Console.WriteLine("An unexpected error has occurred: " +
e.Message + "\n" + e.StackTrace);
}
}
SalesforceのsetPasswordの注意点
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/9e08934fd24485c7d9e691a312f16a4ef7ff96eb/66625a28-0ad3-4d7f-951f-132f736aa170.jpg)
setPasswordが使えないユーザーについて
SalesforceのsetPassword()は基本的にApexクラスを使用して変更処理を行います。SalesforceのsetPassword()は、ユーザーIDと新しく設定したいパスワードを引数として渡します。 しかし、setPassword()を使用できないユーザーもいるのです。setPassword()の基本的な構文は以下になります。System.setPassword(UserInfo.getUserId(), newPassword);
例えば、社内のユーザーやカスタマーユーザーはエラーが起きず、問題ないく変更ができたとしましょう。しかし、コミュニティユーザーはパスワードの変更ができないとします。
原因としては、サイトユーザーと同じとシステムに見なされていたなどほかのユーザーと同一視されてしまう場合があります。構文があっている場合は、他の視点で原因を探るといいでしょう。
ユーザーに仮パスワードを設定
SalesforceのsetPasswordでユーザーに一括で仮パスワードを設定する方法と注意点について説明します。 パスワードリセットを行う際にユーザーにメールを送れない、ログイン可能なIPとメールのネットワーク範囲が異なる、同じ仮パスワードを一括で設定したいなど理由はさまざまです。ユーザーパスワードを設定する場合は、開発者コンソールから設定します。 開発者コンソールから「デバッグ」、「Open Execute Anonymous Window」で匿名性のApexを設定しましょう。一括で行う場合は下記サンプルを参考にしましょう。List users = [SELECT Id, Username
FROM User
WHERE isActive = true
ORDER BY Username
];
for(User u : users){
System.setPassword(u.Id, 'Salesforce0000');
}
一括で仮パスワードを設定する注意点
一括で仮パスワードをユーザーに設定したい場合は、いくつか注意点があります。まず、setPassword()を使用して一括でユーザーに仮パスワードを設定するには、人数に制限があります。 アクティブユーザーが151人以上いる場合、ガバナ制限に引っ掛かり、エラーが発生するのです。エラーは「System.LimitException: Too many DML statements: 151」です。 理由としては、パスワードを設定のために各呼び出しで1つのDMLステートメントとされるため、150人より多い人数では、機能ができないためエラーが起こります。また、setPassword()の一括で行うパスワードの変更にはガバナ制限にも気を付ける必要があります。 パスワードを変更したくないユーザーまでパスワードを変更してしまう場合があるのです。失敗しないよう、注意して行うようにしましょう。SalesforceのsetPasswordを活用しよう
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/5e9e289364bb3ddfa01b2e7a2998e19f5b1eaf36/065316f3-57ed-4e3d-9ee4-7d5f7ba7eedf.jpg)
この記事の監修者・著者
![株式会社オープンアップITエンジニア](https://tenshoku-careerchange.jp/wp-content/uploads/2023/07/fzxADbr-_400x400-1-150x150.jpg)
-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
最新の投稿
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に向いている人の性格・特徴ランキング【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に必要なスキルランキング&スキルアップの方法とは?【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に向いている人の性格・特徴ランキング【現役クリエイター職(ライター・デザイナー・編集)64人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に必要なスキルランキング&スキルアップの方法とは?【現役クリエイター職(ライター・デザイナー・編集)64人が回答】