3

ユーザーの電子メール ID を使用して http コールアウト要求を作成し、その電子メールのデータを取得してカスタム オブジェクトにデータを追加するパッケージを Salesforce で作成しました。しかしUserInfo.getUserEmail()、リクエストパラメーターとして使用しようとしたときに、でリクエストを行いnoreply@salesforce.comます。開発者アカウントで実行すると機能します。私も使ってみました

1.String userName = UserInfo.getUserName();
2.User activeUser = [Select Email From User where Username = : userName limit 1];
3.String userEmail = activeUser.Email;

しかし、2行目でエラーが発生しましたList has no rows for assignment to SObject

これは私の最初のセールスフォース パッケージです。

4

2 に答える 2

2

https://salesforce.stackexchange.com/questions/10413/userinfo-getuserremail-returns-noreplysalesforce-com-in-salesforce

これが問題でした。ダニエルはそれにうまく答えました。同じような問題を抱えている人は誰でも、スケジュールされたジョブがサーバー上で「ファントム」プロセスとして実行されるために発生します。そのため、installhandler を使用するときやスケジュールを作成するときに、installedid を提供する必要があります。それ以外の場合、ユーザーの知識はありません。どういうわけかinstalledidを保存してください!

于 2013-04-07T18:53:56.237 に答える
0
List has no rows for assignment to SObject

行が見つからない場合に返されます。これで問題は解決しませんが、ベスト プラクティスは次のようなリストに割り当てることです。

List<User> activeUsers = [Select Email From User where Username = : userName];
if(activeUsers.size() > 0)
  User activeUser = activeUsers[0]; 

http://wiki.developerforce.com/page/Apex_Code_Best_Practices

問題を解決するには、クエリを実行している 2 回のプロファイルが異なり、異なるアクセス許可が割り当てられている可能性があります。ユーザー オブジェクトに対する読み取り権限が設定されていない場合、このようなエラーが発生します。

于 2013-04-07T05:16:12.753 に答える