コードが書けないSalesforceエンジニアのみなさん!SOQLにチャレンジしてみませんか?
ご挨拶
こんにちは!株式会社SHIFT カスタマーサクセス部 Salesforceグループの大下と申します。カスタマーサクセス部という、お客様目線でサービスを提供する部署の中で、Salesforceという製品を扱っております。Salesforceとはなんだろう?という方は、ぜひともこのブログ をご覧ください。
SOQLとはなんでしょう
SOQLとは、Salesforce Object Query Languageの略で、Salesforce内のオブジェクトレコードを検索できるクエリ言語のことを言います。はぁ?と思ったあなた、安心してください。もうちょっと分解していきましょう。クエリとは、データベースに対する命令文のことです。条件を指定して「このオブジェクトのこれとこれとこれの条件を満たしているデータを私のもとに持ってきたまえ」とデータベースに対して命令することをSOQLって言います。
SOQLは、書けないより書けたほうがいいに決まってる
かくいう私もコードが書けないエンジニアのひとりです。標準機能いっぽんでここまで闘ってきました。ですが、簡単なSOQLなら書けます。何故か。必要にかられて覚えました。うっ…SOQLを…覚えなければ…不便すぎる…がんばって覚えなければ…と、SOQLの壁が目の前にそびえ立つ、そんなタイミングがいつかコードが書けないみなさんの元にも訪れます。
例えば、「あーあのオブジェクトのあの項目ってどんなデータが格納されてるんだろ。10件ぐらいExportしたいな。」みたいな時。「あのエラー、なんのレコードに対するエラーなんだろ。ちょっと調べてみたいな。」なんて時。「フロー修正して項目の値が表示されるか動作確認したいんだけど、ページレイアウトで表示してない項目じゃん。さらっと確認したい!」とか。
いつかあなたにも訪れるその日のために、今日は私と一緒に準備しましょう!知っておいて得はあっても損はないです!
とりあえずやってみよう
開発者コンソールは、いつでも画面右上の設定アイコンであなたのことを待っています。
はい、どーん。
これが開発者コンソールです。
あっ、待って。帰らないで!無理とか言わないで。一緒にやればきっとできるようになります。元コードアレルギーの私が保証します!
よくエンジニアの人が言うじゃないですか「クエリを叩く」って。おおおおお、なんだなんだクエリを叩くって。かっけー。私もクエリ、叩いてみたい!よく知らんけど、とりあえず叩きたい!「じゃあ私、クエリ叩いてみますね!」って言ってみたい!どや顔で言ってみたい!ぱぱっと叩きたい!冷蔵庫のありもので料理しちゃうみたいにぱぱっと!
さぁ、勇気を出して叩いてみましょう、クエリを!私と一緒に!怖くないです。こっちからクエリを叩くことはあっても、クエリから叩かれることはありません!
まずは、「Logs」から「Query Editor」にタブを切り替えてみましょう!
切り替えられましたか?なんだかよくわからない言葉が入力されてますね。不安になってきた方もいると思います。待って。そっとブラウザを閉じたくなったあなた、大丈夫。怖くないです。あとちょっとの我慢です。なにか間違ったとしてもパソコンが爆発したりはしません。
上のエリアには「ここにクエリを入力してね」って書いてます。
そして、下のエリアには「エラーがあった時にはここに表示されるよ」って書いてます。
ただ、それだけのことです。
上のエリアにこう入力してみましょう。
※シングルクォーテーションで囲まれたIDには、任意の取引先IDを入力してみてくださいね。
SELECT Id,Name,OwnerId FROM Account WHERE Id = '0012t00000UCkTVAA1'
そして「Execute」をクリックします。
そうすると、なんと!結果が!返ってきました!おかえりなさい!おかえり結果!
ね!あなたにもクエリ叩けたでしょう?
では更に、この取引先の所有者って誰なんだろ を調べてみましょう。
上のエリアにこれを入力します
※シングルクォーテーションで囲まれたIDには、さっきの結果で表示されたOwnerIdを入力してみてくださいね。
SELECT Id,Name FROM User WHERE Id = '0052t000001X4oeAAC'
で、Executeをクリックしてみましょう。
はい、結果返ってきました。もう楽勝じゃないですか。
ではおさらいです。
SELECT で表示させたい項目のAPI参照名を指定します。
そして、FROM でオブジェクトのAPI参照名を指定
WHERE ID で探して欲しいレコードIDを入力しました
すごい!やりましたね!今日はSOQL記念日です!
あとはアレンジするのみ
勇気を振り絞って開発者コンソールを開いたあなたはもう、勝ち組です。これでコードアレルギーからの、この支配からの卒業です。0から1にすることがいちばん労力がいるんです。ほんとはやればできるのに、できないと思い込んでしまっている自分から脱却することが、最も大変なことだったりします。あとはもう、ひたすらアレンジするのみ!ググってググってググりまくりましょう。
例えば、とりあえずレコードを10件だけ取得したい時
SELECT Id,Name,CreatedDate FROM Account LIMIT 10
例えば、電話番号項目の値が空欄の取引責任者を取得したい時
SELECT Account.Name,Name FROM Contact WHERE Phone != NULL
全ての商談件数を知りたい時
SELECT COUNT(Id) FROM Opportunity
特定の取引先に紐づく商談レコードを取得したい時
SELECT Id, Name, OwnerId, Owner.name, StageName, LastModifiedDate FROM Opportunity WHERE AccountId = '0012t00000UCkTVAA1'
※シングルクォーテーションで囲まれたIDには、商談レコードを持つ任意の取引先IDを入力してみてください。
などなど、SOQLはアレンジ次第でいろんなことを確認するために役立ちます。
もちろん開発者コンソールだけでなく、データローダでも使えるんですよ。
データローダでExportメニューを選び、オブジェクトと出力先を指定した次の画面。
ここで、SOQLを入力することができます。
SELECT Active__c,Id,Industry,Name,NumberOfEmployees FROM Account WHERE LastModifiedDate >= 2021-12-01T00:00:00Z AND LastModifiedDate <= 2021-12-01T00:00:00Z
と、ここでは取引先の最終更新日を範囲指定してみました。
最後に
今日は、一緒にSOQLのお勉強をしました。
いかがでしたか?
ちょっと調べたい時、データローダで条件を指定したい時、必ず役立つと思います!
そして、最後までお付き合いいただき、ありがとうございました。
ぜひともハートをクリックしていただけると、嬉しいです!
※ブログ内の画像は、全てトライアル環境のものを使用しています
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/
PHOTO:UnsplashのMohammad Rahmani