sf でのエラーのまとめ


+ [sf command 関係のエラー](https://qiita.com/Keiji_otsubo/items/f3fcf2e71e3c6dcae7a7)

--------
sfへの移行が推奨されているので、sfと明らかにわかるエラーを別途分けて管理します。

[sfdx (v7)からsf (v2)への移行](https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_move_to_sf_v2.htm)

現在使用している場合SFDX(v7) に移行することを強くお勧めします。SF(v2)。移行は簡単です。まずアンインストールします。SFDX(v7) をインストールしてから、SF(v2)。移動後も、ターミナルで実行していた CLI コマンドや継続的インテグレーション (CI) スクリプトは、引き続き以前と同様に機能します。

# 便利な　sfdxコマンド

+ [開発者が定時で帰るための8つのsfdxコマンド](https://base.terrasky.co.jp/articles/ilr7t)

force:source:retrieve	メタデータを取得する。

+ [未公開メールテンプレートをリトリーブする方法](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007ifh2v)

ターミナルでメールテンプレートをリトリーブするときは

sfdx force:source:retrieve -u staging -m　"EmailTemplate:（フォルダーのDeveloperName）/（テンプレートのDeveloperName）"

のコマンドで取得できます。

ただフォルダーのDeveloperNameが不明の際（未公開メールテンプレート）、どのようなコマンドで取得できるのでしょうか?


Folder.DeveloperNameが空だったときのリトリーブコマンドはsfdx force:source:retrieve -u staging -m "EmailTemplate:（フォルダーのDeveloperName）/（テンプレートのDeveloperName）"

からどこか変化するのかという意図での質問でした。

Folder.DeveloperNameがあるものは上記のコマンドでメールテンプレートを取得できました。

----------------

+ [sf cli を使用した Salesforce アップグレードリリース](https://trailhead.salesforce.com/trailblazer-community/feed/0D5KX00000PW7Km)


# Run a Validate-Only Deployment option is not available

+ [sf project pipeline validate command getting error.](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007MYQr0)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/bf2fcd5b-db54-8933-f885-be4e86be9f01.png)

:::note
Validate-only promotion works only for versioned promotions, which are promotions of bundles.

In your case UAT is the bundling stage so the bundle is created after you promote to PROD, it doesn't exist before that and that is why the validate-only doesn't work, you don't have a bundle to validate yet.

検証のみのプロモーションは、バンドルのプロモーションであるバージョン付きプロモーションに対してのみ機能します。

あなたの場合、UAT はバンドル段階であるため、PROD に昇格した後にバンドルが作成されます。その前には存在しないため、検証のみが機能しません。まだ検証するバンドルがありません。
:::

# sfのアンインストール

+ [Unable to update sf version](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007Ou5Wn)

これが表示される場合はコマンドのパラメータが存在していない

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/648cb014-57d1-21da-c5eb-6d1855030a0b.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/27e0226b-aee8-6c55-366b-4f7361bb92e3.png)

:::note
To uninstall sf (v1 or v2), run this command:

```
npm uninstall @salesforce/cli --global
```

https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_uninstall.htm
:::

# ERROR running force:apex:test:run:  Invalid time value

+ ['Invalid time value' from 'sfdx force:apex:test:run'](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000EnEeB)

:::note
sf apex run test --wait 300 --test-level RunLocalTests --code-coverage --result-format json 
:::


# Error (10): Metadata API request failed: Cannot read properties of null (reading 'split')

+ [sf cli 2.28.6 Error (10)](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007ZAcyu)

:::note
The challenge was not in VSCode Salesforce plugins nor the 2.28.6 cli.   The solution:  I removed the .sf and .sfdx hidden folders from my project (if you look inside there's a ton of metadata + tools, etc...)  Then, I ran  sf config:set target-org=myorg.  I was able to deploy successfully.    

From what I can tell the metadata that's cached in those directories was not compatible with the new version of the cli.  And issuing the set defaultusername command generated the .sf and .sfdx directories with the supported metadata for the cli.     Looking at our .gitignore, there's a good reason why we don't version control those directories. 

課題は VSCode Salesforce プラグインにも 2.28.6 cli にもありませんでした。解決策: プロジェクトから .sf と .sfdx の隠しフォルダーを削除しました (中身を見ると大量のメタデータとツールなどが存在します...) それから、 sf config:set target-org=myorg を実行しました。無事にデプロイできました。    

私の知る限り、これらのディレクトリにキャッシュされているメタデータは cli の新しいバージョンと互換性がありませんでした。setdefaultusername コマンドを発行すると、cli でサポートされているメタデータを含む .sf ディレクトリと .sfdx ディレクトリが生成されました。.gitignore を見ると、これらのディレクトリをバージョン管理しないのには十分な理由があります。 
:::

#  sf:INSUFFICIENT_ACCESS: INSUFFICIENT_ACCESS: use of the Metadata API requires a user with the ModifyAllData or ModifyMetadata permissions.

+ [Failure in :"SFDX: Deploy Source to Org"](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000A92UZSAZ)

:::note
プロファイルのメタデータ タイプにアクセスできる必要があります
 
スクリーンショットを確認して、プロファイルがこれらのメタデータ タイプにアクセスできるかどうかを確認してください。

you need to have access to metadata type for your profile
 
pls check the screenshot and see if your profile has access to those metadata types 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/927d008c-c04c-48af-078e-d48369e5d78f.png)
:::

# sf cli でテスト結果を取得するときにエラーが発生しました

+ [sf cli でテスト結果を取得するときにエラーが発生しました](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007ifr3Z)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/cc2f3f09-76a3-b475-2195-7c76256e702e.png)

:::note
sf cli コマンドは正しいです。最後に「|| true」を追加すると、コードが正しく動作することがわかりました。
:::