tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Salesforce Extensions for Visual Studio Codeを試してみました

MavensMateのサポートが終了した後も意外とそのまま使えていたので利用していたのですが、先日の最後のアップデートでご利用ありがとうございましたメッセージが表示されるようになりました。

f:id:tyoshikawa1106:20190717204450p:plain


ということでやろうと思いつつできていなかったVS Codeをつかった開発環境構築を試してみました。次の専用サイトが用意されているみたいです。
f:id:tyoshikawa1106:20190717204816p:plain

Salesforce Extensions for Visual Studio Code


リンク先からVisual Studio CodeとSalesforce Extensionsをインストールできます。

Visual Studio Code

f:id:tyoshikawa1106:20190717205305p:plain

Salesforce Extensions

f:id:tyoshikawa1106:20190719073356p:plain


Get Startedのページに環境構築に必要な情報が記載されています。下記を用意すれば良いみたいです。

  • Visual Studio Code
  • Java Platform, Standard Edition Development Kit
  • Salesforce CLI
  • Salesforce Extensions for Visual Studio Code


Java Platform, Standard Edition Development KitについてはJava Setupページに詳細が記載されていました。
f:id:tyoshikawa1106:20190717205949p:plain

Javaの環境構築はいくつか種類があるみたいですが、データローダでも必要になったZuluを利用すればいいのかなと思います。
f:id:tyoshikawa1106:20190717210345p:plain


データローダでインストールしたときの記事はこちら。

SFDC:データローダv.46.0のインストールを試してみました - tyoshikawa1106のブログ

インストール後のバージョン確認は『java --version』でできます。
f:id:tyoshikawa1106:20190717210619p:plain


Javaの準備ができたので続いてSalesforce CLIの準備です。専用のダウンロードサイトが用意されています。
f:id:tyoshikawa1106:20190719074412p:plain

https://developer.salesforce.com/ja/tools/sfdxcli

Node.jsからインストール

専用のインストーラからインストールできますが、npmコマンドでインストールすることも可能です。
f:id:tyoshikawa1106:20190717211135p:plain

npmでやる場合はNode.jsのサイトからインストールできます。
f:id:tyoshikawa1106:20190717211458p:plain

Node.js

インストーラからインストールするとnodeとnpmの環境が用意できます。
f:id:tyoshikawa1106:20190717212115p:plain:w300


Node.jsのバージョン指定やバージョンアップなどはnodebrewを使うと良いと思います。

Node:nodebrewでv4.2.1にアップデートしてみました - tyoshikawa1106のブログ


nodebrewからnode.jsをインストールすることもできます。コマンドはこちら。

$ nodebrew install-binary v10.16.0

f:id:tyoshikawa1106:20190717211750p:plain

f:id:tyoshikawa1106:20190717211917p:plain


Node経由でSalesforce CLIをインストールするとこんな感じ。salesforce-almというプラグインがインストールできなかったとWARNINGがでました。自分で追加でインストールできましたが、これが必要なのかはちょっと不明。
f:id:tyoshikawa1106:20190717212933p:plain

f:id:tyoshikawa1106:20190717213606p:plain


実際に手探りで試していたときは下記の手順で進めました。

  1. npmコマンドでsalesforce cliをインストール
  2. warningなどのメッセージがでたので追加でプラグインをインストール
  3. そもそもインストーラ自体が用意されていたことに気づく。
  4. 念の為インストーラからもインストール実行


Salesforce CLIのインストールはこんな感じ。下記のコマンドでインストールができているか確認できます。

$ sfdx --version

f:id:tyoshikawa1106:20190722075318p:plain


同じくプラグインのインストールも確認します。

$ sfdx plugins --core

f:id:tyoshikawa1106:20190722075527p:plain


詳細は開発者ガイドに記載されています。
f:id:tyoshikawa1106:20190722075234p:plain

Salesforce Developers


これでSalesforce CLIのインストールができました。環境構築で必要なものは用意できたと思います。次は実際にプロジェクト作成です。


Force.com IDEやMavensMateと同じように開発する方法は「Org Development Model with VS Code」のページに記載されているようです。VSCodeで下記のコマンドを実行してプロジェクトを作成すればいいようです。(コマンド実行のボックスはCmd+Shift+Pで表示できます。)

> SFDX: Create Project with Manifest

f:id:tyoshikawa1106:20190722080148p:plain

Org Development Model with VS Code


実際に実行してみると・・・コマンドが見つかりませんでした。。何かしらの設定手順が漏れているみたいです。
f:id:tyoshikawa1106:20190722080357p:plain

Salesforce CLIが適用されていない気がする。
f:id:tyoshikawa1106:20190722080606p:plain:w300


検索してみたところ下記の情報がみつかりました。VS Codeのバージョンや拡張機能の問題の可能性がありました。。
f:id:tyoshikawa1106:20190722080817p:plain

salesforcedx - SFDX: create project using manifest not available - Salesforce Stack Exchange

試したこと

①VS Codeの初期化
VS Codeの再インストールを行いました。インストールした拡張機能も下記のコマンドで削除してみました。

※.vscodeフォルダを削除するコマンド。気軽に実行しないほうがいいやつ
$ rm -rf .vscode

ENABLEDにSalesforce Extensions Packの機能だけがインストールされた状態。
f:id:tyoshikawa1106:20190723075924p:plain


VS Codeを一旦終了して再起動。これで確認してみました結果、無事「SFDX: Create Project with Manifest」コマンドが選択できるようになりました。過去にインストールしていた拡張機能の影響で最新版のSalesforce Extensionsが適用されていなかったみたいです。
f:id:tyoshikawa1106:20190723080108p:plain


ひとまずこれで環境構築に成功しました。

Salesforceプロジェクトの作成

環境構築できたところで実際にプロジェクトを作成してみます。VS Codeを起動して下記のコマンドを実行します。

$ SFDX: Create Project with Manifest

f:id:tyoshikawa1106:20190723191303p:plain


コマンドを実行するとプロジェクト名の入力欄が表示されます。
f:id:tyoshikawa1106:20190723191616p:plain


続いてプロジェクトを作成するフォルダが求められます。
f:id:tyoshikawa1106:20190723191749p:plain


フォルダを選択すると以下のように必要なファイルが生成されます。
f:id:tyoshikawa1106:20190723191822p:plain


こんな感じの構成です。
f:id:tyoshikawa1106:20190723191915p:plain


プロジェクトの雛形が作成できたら続いてSalesforce組織と接続します。そのときの手順はこちらが参考になりました。

Salesforceプロジェクトと開発組織を関連付け

下記のコマンドを実行します。

$ SFDX: Authorize an Org

f:id:tyoshikawa1106:20190723192723p:plain


接続先のログインURLが聞かれます。(本番かSandboxかカスタムURLか)
f:id:tyoshikawa1106:20190723193341p:plain


組織の別名を登録できます。(空値で進めてよかったかも)
f:id:tyoshikawa1106:20190723193429p:plain


上記作業の後に自動でログインページに移動します。
f:id:tyoshikawa1106:20190723193557p:plain


接続したい組織のアカウントでログインすると認証ページが表示されます。
f:id:tyoshikawa1106:20190723193635p:plain


認証するとブラウザ側はそのままログイン後のページに移動しますが、VS Code側ではコンソールに接続成功のメッセージが表示されます。
f:id:tyoshikawa1106:20190723193838p:plain

コードの取得

manifestフォルダ内にpackage.xmlファイルがあるのですが、そのファイルに対して右クリックするとデータの取得とデプロイのメニューが追加されています。「SFDX: Retrieve Source from Org」を選択するとソースコードが取得できます。
f:id:tyoshikawa1106:20190723194625p:plain


これでclassやトリガなどpackage.xmlで指定したとおりにソースコードがダウンロードされます。今回試したときにファイル数が多かったためか崇徳したはずのclassファイルがVS Code上で表示されない現象が発生しましたがVS Codeを立ち上げ直したら問題なく表示されました。
f:id:tyoshikawa1106:20190723195128p:plain

コードのデプロイ

デプロイというかコードの保存の方法です。VS Codeでクラスやページなどのソースコードを変更した後は対象ファイルを右クリックして「Deploy Source to Org」から実行します。
f:id:tyoshikawa1106:20190723200719p:plain


実行後にSalesforce組織を確認したところ対象クラスが無事に更新されていました。
f:id:tyoshikawa1106:20190723200829p:plain


変更を組織に反映するのに毎回コマンドを実行するのは少し面倒と思ったのですが下記の手順で自動化できるみたいです。
「.vscode/settings.json」に"salesforcedx-vscode-core.push-or-deploy-on-save.enabled": trueと記述。
※デフォルトはfalseで記載されていました。

f:id:tyoshikawa1106:20190723201320p:plain


上記設定を反映後に試してみたところファイル保存時に自動で組織にアップされることを確認できました。

保存時のエラーチェック

保存時にエラーがある場合はPROBLEMSのタブで原因が表示されました。
f:id:tyoshikawa1106:20190723201651p:plain

その他ハマった話

今回のディレクトリの構成はこんな感じ。
f:id:tyoshikawa1106:20190723202028p:plain

VS Codeを開き直したときにOpen Folderでフォルダを選択するさいに上記のmyappフォルダを選択したところ、右クリックでSFDXメニューが表示されなくなりました。上記の場合はforce-appフォルダなどの一階層上のファイルを選択する必要がありました。

もしSFDXメニューが表示されなくなったりしたときにはOpenFolderで選択したディレクトリを見直すと解決するかもしれないです。

VS Codeの設定

minimap

VS Codeの右側にminimapが表示されますが非表示にしたい場合は「view」→「hide minimap」で非表示にできます。表示する場合は「show」を選択します。
f:id:tyoshikawa1106:20190723202422p:plain

ファイルのクローズ

Open FolderでファイルをEXPLOERに表示できますが、非表示にしたい場合は「File」→「Close Folder」で非表示(クローズ)にできます。
(最初エディタを閉じたら次開いたときにクリアされると思っていたので、残り続けて少し困りました。)
f:id:tyoshikawa1106:20190723202651p:plain

Apexテストについて

Test Focus on Apex Tests Viewでテストモードに切り替えられるみたいです。テストモードに切り替えておくとRun All Testが選択できるようになります。
f:id:tyoshikawa1106:20190723203133p:plain


実行結果はこんな感じで確認できます。
f:id:tyoshikawa1106:20190723203340p:plain


他にも知るべき機能があると思いますがひとまずこれで最低限の利用はできそうです。


Apexコードの作成

Createコマンドで作成できます。
f:id:tyoshikawa1106:20190723203616p:plain

f:id:tyoshikawa1106:20190723203635p:plain

f:id:tyoshikawa1106:20190723203646p:plain

f:id:tyoshikawa1106:20190723203659p:plain


ファイルができた後は一度保存による自動DeployするかDeployコマンドを実行することで組織に反映されます。

さいごに

以上がSalesforce Extensions for Visual Studio CodeによるSalesforceの開発環境の流れです。MavensMateとはだいぶ感覚がことなりますが、基本的には慣れの問題だと思います。プロジェクトのファイル構成は今後のSalesforceプロジェクトの雛形になっていくと思いますのでSalesforce Extensionsによる開発でやっていくのが良さそうです。

SFDC:Apexによるメール送信処理とSandbox有効化時の送信設定について

Salesforce組織内でApexによるメール送信処理が存在している場合の注意点です。Sandbox組織を有効化した時点では組織からメール送信が実行できないようになっています。このままにしておくとApexのメール送信処理実行時に下記のようなエラーが発生します。

SendEmail failed. First exception on row 0; first error: NO_MASS_MAIL_PERMISSION, Single email is not enabled for your organization or profile.: []


設定で有効化できるので忘れずに有効化しておくと上記エラーは回避できます。
f:id:tyoshikawa1106:20190704192754p:plain


テストクラスでも影響があったと思うので本番ではアレ・・本番では平気だったのにとなったときはこちらの設定を確認すると良いと思います。

SFDC:Lightningページのリッチテキストコンポーネントを試してみました

Lightningページのリッチテキストコンポーネントを試してみました。

f:id:tyoshikawa1106:20190704185247p:plain


検索ボックスでリッチと入力するとヒットします。
f:id:tyoshikawa1106:20190704185355p:plain:w200


テキストは自由に入力でき、文字サイズや色も指定できます。
f:id:tyoshikawa1106:20190704185410p:plain:w200


こんな感じでページ内に埋め込むことが可能です。
f:id:tyoshikawa1106:20190704185454p:plain


カードとして表示のチェックで背景色の有無を切り替えることができます。
f:id:tyoshikawa1106:20190704185555p:plain:w200


チェックなしの場合はこんな感じ。
f:id:tyoshikawa1106:20190704185642p:plain


チェックありだとこんな感じです。
f:id:tyoshikawa1106:20190704185731p:plain


Lightningコンポーネントなので表示条件を指定することも可能です。例えば商品の登録件数が0件の場合にアラートメッセージを表示するといった使い方ができます。
f:id:tyoshikawa1106:20190704185907p:plain:w200


※結果がTrueの場合に表示されるので商品フラグがFalse (商品0件)の場合に表示と設定します。
f:id:tyoshikawa1106:20190704190112p:plain:w200

商談商品の登録なし

f:id:tyoshikawa1106:20190704190155p:plain

商談商品の登録あり

f:id:tyoshikawa1106:20190704190249p:plain


Visualforceページの埋め込みと違い、レコードの更新などを行った際に即条件判定が行われて表示が切り替わりました。お知らせやデータ更新漏れ時のアラート表示など汎用的に使える便利機能だと思います。

SFDC:Chatterグループ作成とメール通知の一括設定を試してみました

Chatterグループ作成とメール通知の一括設定についてです。

f:id:tyoshikawa1106:20190704182127p:plain


グループに対してメンションするとグループメンバーに通知が行きますが、メール送信に関しては別途設定が必要です。
f:id:tyoshikawa1106:20190704182250p:plain


各ユーザが私の設定でChatter→メール通知のページからメール送信をONにする必要があります。
f:id:tyoshikawa1106:20190704182358p:plain


とはいえ重要なお知らせを行うグループの場合は管理者側で一括で登録したい部分があります。その場合はデータローダをつかって更新するのが良さそうです。グループの投稿権限の更新はShow all Salesforce objectsのチェックボックスにチェックをつけると表示されるグループメンバーオブジェクトから行えます。
f:id:tyoshikawa1106:20190704182810p:plain


はじめにEXPORTでレコードIDと現在の通知設定を取得しておきます。(今回は省略していますが対象のグループやユーザを絞ったりも必要に応じて行います。)
f:id:tyoshikawa1106:20190704183031p:plain


取得結果はこちら。NotificationFrequency項目で管理されていてNとなっている場合は受信しない設定となります。
f:id:tyoshikawa1106:20190704183323p:plain


詳細はSOAP APIガイドに記載されています。
f:id:tyoshikawa1106:20190704183516p:plain


今回は投稿ごとにメール通知を行いたいので"P"で更新します。
f:id:tyoshikawa1106:20190704183752p:plain:w200


これでメール送信設定に更新されました。
f:id:tyoshikawa1106:20190704183940p:plain


ユーザがSalesforceに慣れていれば私の設定から各自メール通知設定してもらうのが良いと思いますが、Salesforce導入直後などは管理者側で一括更新(兼 強制メール通知設定ON)にしてしまったほうが連絡の確認漏れが防げて良いと思います。

参考

SFDC:データローダv.46.0のインストールを試してみました

個人PCにインストールしていたデータローダのバージョンが38.0でだいぶ前だったので再インストールを試してみました。

f:id:tyoshikawa1106:20190702221535p:plain


気づいたらインストールページに手順のリンクが追加されていました。


zipファイルの解凍方法の記載もありましたがそこは普通に解凍して大丈夫でした。解凍後はinstall.commandファイルを右クリック→開くの手順で起動すればいいみたいです。

f:id:tyoshikawa1106:20190702221732p:plain


起動するとターミナルにメッセージが表示されます。
f:id:tyoshikawa1106:20190702221914p:plain


その後デスクトップに云々やアプリケーションランチャーに云々と質問があったのでとりあえず yesで進めてみました。
f:id:tyoshikawa1106:20190702222053p:plain


正確にはこちら。

Do you want to create an icon to launch Data Loader from your Desktop? [Yes/No] you want to create an icon to launch Data Loader from your Desktop? [Yes/No]yes

Do you want to create a link to launch Data Loader from your Applications
directory? [Yes/No] yes
Data Loader installation is quitting.

f:id:tyoshikawa1106:20190702222149p:plain


これでデータローダ46.0がインストールできました。
f:id:tyoshikawa1106:20190702222301p:plain

追記

上のでとりあえずインストールできたと思って一度投稿していたのですが、投稿のあとにデータローダを起動したらいつもと違いターミナルが表示された上にエラーメッセージが...。
f:id:tyoshikawa1106:20190702223145p:plain


ヘルプを読んだらこれが必要でした。

.DMG ファイルを使用して、macOS 用の Zulu OpenJDK バージョン 11 をインストールします。

f:id:tyoshikawa1106:20190702223257p:plain

Download OpenJDK Java Linux Windows macOS Alpine Java 11 Java 8


バージョンを選んで、OSを選んでインストールします。
f:id:tyoshikawa1106:20190702223422p:plain


JDKを入れればいいのでここから。ボタンが3つありますがファイル形式が違うだけ、DMGファイルで良いと思います。
f:id:tyoshikawa1106:20190702223547p:plain

f:id:tyoshikawa1106:20190702223718p:plain

f:id:tyoshikawa1106:20190702223730p:plain

f:id:tyoshikawa1106:20190702223759p:plain

f:id:tyoshikawa1106:20190702223821p:plain


Zulu OpenJDK バージョン 11をインストールして再度実行したところ、ターミナルが呼び出されるのは変わりませんでしたが、データローダ起動するようになりました。
f:id:tyoshikawa1106:20190702224023p:plain


最近のデータローダはこんな感じでインストールすればいいみたいです。

SFDC:レポート登録機能によるメール送信と受信者のロール指定について

レポート登録機能のメール送信と受信者のロール指定についてです。サポートに問い合わせして教えてもらいました。

Lightning Experience でのレポートへのユーザ、グループ、ロールの登録


レポートの登録でメール受信者を設定できますがロールや公開グループを追加しようとしたところ、特定のロールが選択できないなどの現象にハマりました。
f:id:tyoshikawa1106:20190627203944p:plain


この表示されない原因ですがレポートフォルダの共有設定と関連があったようです。
f:id:tyoshikawa1106:20190627204128p:plain


次のようにロールを追加してあげると・・
f:id:tyoshikawa1106:20190627204059p:plain


そのロールがレポート登録のメール受信者設定で選択できるようになりました。
f:id:tyoshikawa1106:20190627204234p:plain


レポートアクセス権限があるユーザにのみレポート登録機能による通知メールを送信できるように制御しているため権限が付与されていない場合は選択できないようになっているみたいです。またメール受信者に設定後に共有権限から除外すると登録機能の受信者設定は解除されるようです。
f:id:tyoshikawa1106:20190627204443p:plain

SFDC:Lightningメールテンプレートを試してみました

Lightningメールテンプレートを試してみました。
f:id:tyoshikawa1106:20190627195212p:plain


設定メニューに用意されていますがそちらはフォルダおよび拡張共有の有効化ができるだけみたいです。Lightningメールテンプレートの作成はアプリケーションランチャーのメールテンプレートから作成できます。
f:id:tyoshikawa1106:20190627195635p:plain


こちらからLightningメールテンプレートの設定ページです。非公開メールテンプレートやフォルダ管理が可能となっています。
f:id:tyoshikawa1106:20190627195723p:plain


メールの作成画面はこんな感じです。
f:id:tyoshikawa1106:20190627200435p:plain


画面右下の差し込みアイコンで変数をセットできます。
f:id:tyoshikawa1106:20190627200551p:plain


セットできる変数の選択画面はこのようになっていました。
f:id:tyoshikawa1106:20190627200631p:plain


必要な内容を入力して保存ボタンをクリックすればテンプレートは作成完了です。
f:id:tyoshikawa1106:20190627200841p:plain


関連タブから添付ファイルの設定もできました。
f:id:tyoshikawa1106:20190627200944p:plain


メールテンプレートの使い方です。はじめに取引先責任者またはリードのレイアウト設定でLightningアクションのメールを追加します。
f:id:tyoshikawa1106:20190627201310p:plain


これで活動関連リストからメール送信が可能になります。
f:id:tyoshikawa1106:20190627201439p:plain:w250


画面下側にテンプレートの挿入アイコンがあります。そちらから先程のテンプレートを適用できます。
f:id:tyoshikawa1106:20190627201609p:plain:w250

f:id:tyoshikawa1106:20190627201735p:plain:w250


入力欄を大きくしたい場合はドッキングビューのポップアップを選択します。
f:id:tyoshikawa1106:20190627201825p:plain:w250


次のように画面下側にドッキングビュー形式で表示されます。
f:id:tyoshikawa1106:20190627201913p:plain:w250


あとは右上の拡大アイコンでポップアップ表示すれば大きい入力欄に切り替えができます。
f:id:tyoshikawa1106:20190627202051p:plain


送信前にメールをプレビューアイコンを選択すれば変数に実際の値が差し込まれた状態で文章を確認できます。
f:id:tyoshikawa1106:20190627202245p:plain:w250


添付ファイルがある場合は確認ポップアップも表示されました。
f:id:tyoshikawa1106:20190627202315p:plain:w250


送信結果は活動の記録タイムラインに表示されます。開封の有無も確認できるみたいです。
f:id:tyoshikawa1106:20190627202403p:plain


送信結果はこんな感じでした。
f:id:tyoshikawa1106:20190627202508p:plain


作成したLightningメールテンプレートですがレコードとして扱われるため変更セットのリリースはできないみたいです。Ideaページも用意されていましたが現時点ではデータローダによる移行が対応方法のようです。


活動に残るメールはストレージの消費が大きめのため過去分は削除するなどの検討が必要になることがありますが開封の有無が確認でき、入力されたデータを差し込める定型文を用意できるのは便利だと思います。