調べものをする時に便利なSOQLを集めてみる


+ [【ヘルプ】アクセスの問題をトラブルシューティングするためのサンプルクエリ](https://help.salesforce.com/s/articleView?id=sf.admin_troubleshoot_queries.htm&type=5)

+ [Salesforceの環境の中で特定の文字を見つける](https://qiita.com/Keiji_otsubo/items/d4f4f25425d8e75a044b)
+ [ユーザーに割り当てられた権限セットを見つけるためのクエリ](https://help.salesforce.com/s/articleView?id=000319607&type=1)
+ [使われていない権限セットを探したい](https://qiita.com/Keiji_otsubo/items/893e59be1cccd7670a84)
+ [ユーザーがそのレコードに対してどのタイプのアクセス権を持っているかを確認する](https://salesforce.stackexchange.com/questions/106212/insufficient-access-on-cross-reference-entity-insufficient-access-rights-on-cro)
+ [Check test coverage : カバー率をみる](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000HE7YSSA1)
+ [SOQL を使用して、どのユーザがレコードタイプを使用できるかを確認する](https://salesforce.stackexchange.com/questions/5063/finding-if-which-users-have-a-record-type-available-to-them-using-soql)
+ [Fetch public groups for a user via Apex](https://help.salesforce.com/s/articleView?id=000387341&type=1)
+ [OverrallCodeCaverageでパーセントが出ると思うのですが、この順番って実行順に並び替える](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000Jg49MSAR)
+ [Apex クラスからプロファイルのフィールドレベルのセキュリティを設定する方法は?](https://developer.salesforce.com/forums/?id=9060G0000005hnvQAA)
+ [レポートフォルダの共有先とアクセス権を一気に確認する方法について](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000Otabm)

:::note
一度に確認する方法がなさそうなかんじですね。
SOQLで検索するにしても、UserRecordAccessを検索してアクセス権を確認する方法みたいです。

Apexで繰り返しのコードを書けばよさそうですが、単純にSOQLをコールすると101回の制限にかかりそうです。

英語ですが回答されています。
https://developer.salesforce.com/forums/?id=9062I000000IRq3QAG
:::

# カスタムメタデータ

+ [How to get the all the Custom Metadata object in Salesforce Org?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007RJ1Qh)

```sql
SELECT Label,QualifiedApiName from EntityDefinition Where QualifiedApiName LIKE '%__mdt%'
```

# 権限セットのある項目がtrueになっているものを探す

+ [システム権限で「参照のみ項目の編集」権限が ONになっている権限セットを確認する方法](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007X8NMG)

:::note

参照のみ項目の編集はPermissionsEditReadOnlyFields

```SQL
SELECT Name,PermissionsEditReadOnlyFields FROM PermissionSet where PermissionsEditReadOnlyFields = true
```
:::

|日本語ラベル|API名|
|:----------|:-----------------|
|すべてのデータの編集|PermissionsModifyAllData|
|参照のみ項目の編集|PermissionsEditReadOnlyFields|

英語で項目名を確認してブランクを省くとAPI名と一致するようです。

# 子オブジェクト一覧の確認方法について

+ [子オブジェクト一覧の確認方法について](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007aihEs)

:::note
SOQLを使っても問題ないのであれば、以下の方法があるようです。
サンプルはAccountオブジェクトが親の子オブジェクトを探しています。

For getting All Child objects:

```Java
Schema.DescribeSObjectResult R = Account.SObjectType.getDescribe();
for (Schema.ChildRelationship cr: R.getChildRelationships()) {
   system.debug(‘====child object===’+cr.getChildSObject());
}
```

https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007T42bJSAR
:::

# レポート

+ [API参照名からレポートを検索したい](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007eruP2)

:::note
以下のクエリーで情報を検索することができると思います。

```
select Name,DeveloperName from report
```

NameはUIに表示されているレポート名です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/0bb8aabb-3bfa-948b-e04e-77b72d6355a2.png)

以下のようなコマンドでcsv化もできそうです

```
sfdx force:data:soql:query -q "SELECT Id,Name,Status__c FROM Property__c" --resultformat csv`
```

https://salesforce.stackexchange.com/questions/211219/export-soql-cli-results-to-csv

データローダでもSOQLを指定できると思います。
:::