質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Apex

Apexは、Salesforce上で動作するアプリケーション作成をサポートするアプリケーション開発プラットフォーム。プログラミング言語であるApexコードと、独自のApex WebサービスAPIなどで構成されています。

Q&A

解決済

1回答

4177閲覧

salesforceのApexについて

OkukawaRyoki

総合スコア16

Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Apex

Apexは、Salesforce上で動作するアプリケーション作成をサポートするアプリケーション開発プラットフォーム。プログラミング言語であるApexコードと、独自のApex WebサービスAPIなどで構成されています。

0グッド

0クリップ

投稿2020/09/18 07:25

salesforceを業務で使用することになったのですが周りに質問できる上司がいないので質問させていただきます。

現在TrailheadにてApexのチュートリアルを受講しているのですが、チャレンジにクリアできないため質問させていただきます。
問題文がこちらです。

Trailhead

1Create an Apex class that returns contacts based on incoming parameters. 2For this challenge, you will need to create a class that has a method accepting two strings. The method searches for contacts that have a last name matching the first string and a mailing postal code matching the second. It gets the ID and Name of those contacts and returns them. 3・The Apex class must be called ContactSearch and be in the public scope 4・The Apex class must have a public static method called searchForContacts 5・The method must accept two incoming strings as parameters 6・The method should then find any contact that has a last name matching the first string, and mailing postal code (API name: MailingPostalCode) matching the second string 7・The method should finally return a list of Contact records of type List that includes the ID and Name fields 8 9google翻訳したもの 10受信パラメータに基づいて連絡先を返すApexクラスを作成します。 11この課題では、2つの文字列を受け入れるメソッドを持つクラスを作成する必要があります。 このメソッドは、姓が最初の文字列と一致し、郵便番号が2番目の文字列と一致する連絡先を検索します。 これらの連絡先のIDと名前を取得して返します。 12・ApexクラスはContactSearchと呼ばれ、パブリックスコープ内にある必要があります 13・Apexクラスには、searchForContactsと呼ばれるpublic staticメソッドが必要です 14 このメソッドは、2つの着信文字列をパラメーターとして受け入れる必要があります 15・次に、メソッドは、姓が最初の文字列に一致し、郵便番号(API名:MailingPostalCode)が2番目の文字列に一致する連絡先 16 を検索します。 17・メソッドは最終的に、IDおよびNameフィールドを含むListタイプのContactレコードのリストを返す必要があります

そしてこちらが私が記述したコードです。

Apex

1public class ContactSearch { 2 public static Contact[] searchForContact(String lastName, String postNum){ 3 Contact[] dml = [SELECT id,name FROM Contact WHERE LastName=:lastName AND MailingPostalCode=:postNum]; 4 system.debug(dml); //テスト用 5 return dml; 6 } 7}

デバックの結果を見ると

debug

116:21:47:024 USER_DEBUG [4]|DEBUG|(Contact:{Id=0032x000008wbl0AAA, Name=Nedaerk Siddartha}) //引数には適当な値を代入しました。

一見あっているように思えたのですが、チャレンジに挑戦してみると以下のような結果が帰ってきます。

Trailhead

1Challenge My Trailhead Playground 1 ではまだ完了していません 2Executing the 'searchForContacts' method failed. Either the method does not exist, is not static, or does not return the expected contacts

メソッドの戻り値の型をList<Contact>などにすることも試しましたが、変わらず、、、と言った感じで何を返せばいいのかがわかりません。

分かる方いましたらよろしくお願いいたします。
全く聴ける人がいないので今後も仲良くしていただけると嬉しいです(欲張り)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おおSFDCの質問がくるとは思ってなかった
規約が多くて大変だよね

  • 受信パラメータに基づいて連絡先を返すApexクラスを作成します。

これはOK

  • この課題では、2つの文字列を受け入れるメソッドを持つクラスを作成する必要があります。

これもOK

  • このメソッドは、姓が最初の文字列と一致し、郵便番号が2番目の文字列と一致する連絡先を検索します。

これもOK

  • これらの連絡先のIDと名前を取得して返します。

これが微妙

  • ApexクラスはContactSearchと呼ばれ、パブリックスコープ内にある必要があります

これもOK

  • Apexクラスには、searchForContactsと呼ばれるpublic staticメソッドが必要です

このメソッドは、2つの着信文字列をパラメーターとして受け入れる必要があります
これもOK

  • 次に、メソッドは、姓が最初の文字列に一致し、郵便番号(API名:MailingPostalCode)が2番目の文字列に一致する連絡先を検索します。

これもOK

  • メソッドは最終的に、IDおよびNameフィールドを含むListタイプのContactレコードのリストを返す必要があります

これが微妙

Contact

APEX

1public class ContactSearch { 2 public static List<Contact> searchForContacts(String lastName, String postNum){ 3 List<Contact> Contacts = [Select Id, Name from Contact where LastName = :lastname AND MailingPostalCode = :postNum ORDER BY Id LIMIT 1]; 4 return Contacts; 5 } 6}

テストクラス

APEX

1@isTest 2public class ContactSearchTest { 3 @isTest static void searchForContacts() { 4 Test.startTest(); 5 List<Contact> Contacts = ContactSearch.searchForContacts('Rogers', '27215'); 6 System.assertEquals(Contacts.size() != 1, true); 7 Test.stopTest(); 8 } 9}

投稿2020/09/18 07:59

編集2020/09/19 00:23
kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OkukawaRyoki

2020/09/18 08:13

こんにちは早速の返信ありがとうございます! 早速提示していただいたコードで試してみたのですが、同じような結果が返ってきてしまいました。 不思議です。。。
kuma_kuma_

2020/09/18 09:37

ごめん微妙に直しました これで試してみて
OkukawaRyoki

2020/09/18 09:44

返信ありがとうございます! まだ失敗してしまうのですが、戻り値に設定する変数を変更するのにはどう言う意図が含まれるのでしょうか? 何度もすみません!
kuma_kuma_

2020/09/18 10:47

こちらの環境でテストクラスで実行してデータ取得できるところまで確認しました ちなみにチャレンジに挑戦ってどうやるの?
kuma_kuma_

2020/09/19 00:27

もしかしてORDER BY と LIMIT がないといけないのかな? こちらでも確認するけどとりあえず修正版上げておきました
kuma_kuma_

2020/09/19 00:41 編集

こっちで修正版試したけど500ポイントもらえたよ? 言語イングリシュで試した? というかしばらくぶりに来たら環境変わっているし... SFDC半年でバージョン変わるから大変だよね
OkukawaRyoki

2020/09/19 03:33

返信ありがとうございます。言語はEnglishで試してみました! ORDER BYとLIMITを付けていただいたバージョンでテストしてみるとクリアできました、、、 要件にはそんな記述ないのに不思議です。 SFDCほんとに大変です。。。そんなにバージョンアップ多いんですね。 このたびは本当にありがとうございました。
kuma_kuma_

2020/09/19 04:49

やっぱり...その前のレッスンで記載があったから、もしかしてと思ったんだけど そういうのSFDC多いからさ SFDC半年でバージョン変わるから 半年ごとに動作検証しないといけないので注意してね とりあえずいまで引っかかったのは一度ぐらいかな? 変更点にない内容も変更になるからね
kuma_kuma_

2020/09/19 05:05

必ず覚えておいて Apex ガバナ制限 ※URL貼りたかったんだけどなぜかSFDCのが表示されない... 本当に必読だから!必ずApex使うと引っかかるからね!
OkukawaRyoki

2020/09/19 07:24

動作しなくなるくらいのバージョンアップがあるんですか、、! 引っかかってるのはこの問題くらいです! また引っかかってしまったらこちらで質問させていただく可能性高いのでよろしくお願いいたいします。 Apex ガバナ制限 しっかりドキュメント読みたいと思います。 何から何までありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問