tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Lightning Exceperienceとコンパクトレイアウト

Salesforceのオブジェクトにはコンパクトレイアウトという設定が用意されています。Salesorce1モバイルアプリで一部項目を見やすい位置に表示するための設定です。
f:id:tyoshikawa1106:20170328231918p:plain


あまり使いみちの無い設定だと思っていましたが、Lightning Exceperienceの登場で用途が広がっていました。詳細ページの下記赤枠の部分にコンパクトレイアウトで設定した内容が表示されます。
f:id:tyoshikawa1106:20170328232116p:plain


ルックアップ項目でもコンパクトレイアウトの設定が適用されます。(上限は4件と思われます。)
f:id:tyoshikawa1106:20170328232216p:plain


コンパクトレイアウトですが標準オブジェクトはデフォルトである程度設定されています。
f:id:tyoshikawa1106:20170328232348p:plain


電話項目は1つにグルーピングされる仕組みです。
f:id:tyoshikawa1106:20170328232409p:plain


※カスタムオブジェクトの場合はName項目だけデフォルト表示されるようになっています。


コンパクトレイアウトはカスタマイズで任意の項目を表示するように設定できます。
f:id:tyoshikawa1106:20170328232625p:plain

f:id:tyoshikawa1106:20170328232716p:plain

f:id:tyoshikawa1106:20170328232740p:plain:w200


表示される項目数に上限はありますが比較的柔軟にカスタマイズできると思います。細かい部分ですがきちんと設定しておくとLightning Experienceが使いやすくなりそうです。

SFDC:Success Communityをモバイル端末から快適に利用する方法

Salesforce Success CommunityはSalesforce1モバイルアプリからの利用がサポートされていません。そのため基本的にはPCからの利用になると思います。
f:id:tyoshikawa1106:20170328224834p:plain


モバイルブラウザから利用できなくはないのですが、文字が小さくなりますし使いづらいと思います。


ですがこの問題を解決する方法があったみたいです。「/one/one.app」を使うやり方です。Salesforce1モードに切り替えてくれるURLですがSuccess Communityでも利用できます。


下記URLでアクセスできました。
https://success.salesforce.com/one/one.app


モバイル端末からアクセスすると次のようになります。

読み込み中

f:id:tyoshikawa1106:20170328230019p:plain:w150

Chatterフィードと通知アイコン

f:id:tyoshikawa1106:20170328230033p:plain:w150

ナビゲーションメニュー

f:id:tyoshikawa1106:20170328230044p:plain:w150

カスタマーサクセス日本のグループ

f:id:tyoshikawa1106:20170328230058p:plain:w150

通知内容の確認

f:id:tyoshikawa1106:20170328230115p:plain:w150


モバイル端末のSafariなどで先程のURLをブックマークしておけば快適に利用できると思います。操作性はSalesforce1モバイルアプリには負けますが通知機能やグループ移動など必要な操作はモバイル端末からでも問題なく利用できました。


最後にブックマークの他にホームに追加の機能も試してみました。
f:id:tyoshikawa1106:20170328225333j:plain:w150


これでホームにショートカットアイコンを表示できます。
f:id:tyoshikawa1106:20170328230322p:plain:w150


Safariのヘッダーとフッダー部分が消えスッキリました。
f:id:tyoshikawa1106:20170328230403p:plain:w150


・・・ですが自分のやった感じではアプリ利用後すぐにログアウト状態になってしまうので毎回ログインする必要ありそうでした。Safariのブックマークとして利用する方がログイン状態が暫くの間保持されるので便利そうでした。

SFDC:Community CloudのトピックとChatterのトピック機能について

Chatterにあるトピックはハッシュタグの延長線的な感じで利用することができます。社内でどの話題が多いのかを管理するための機能になります。
f:id:tyoshikawa1106:20170323013315p:plain


そしてCommunity Cloudにもトピックという機能があります。こちらはすごくてトピックの情報をつかって新しいページを自動生成したりといった使い方ができるみたいです。


設定画面はこちら。
f:id:tyoshikawa1106:20170323013514p:plain


ここで気になる点があります。Community CloudのトピックとChatterのトピックは同じものなのかという点です。Community Cloudのトピックの利用用途を見るととても同じに見えなかったのですが確認してみました。


新規ボタンから次のように作成します。
f:id:tyoshikawa1106:20170323014007p:plain


作成後Chatterのトピックを確認してみました。同じものの場合は作成したトピックがChatter側にも表示されると思います。


その結果・・・表示されました。
f:id:tyoshikawa1106:20170323014128p:plain



Community CloudのトピックとChatterのトピックは基本的には同じものでした。ですがCommunity Cloud側の場合主要トピックやサブトピックなど便利な仕組みが用意されています。
f:id:tyoshikawa1106:20170323014321p:plain



最後にコミュニティ向け組織と社内向け組織ではトピックの管理は別物として管理されます。社内でトピックを沢山登録してもコミュニティ側では再度登録を行う必要がありました。
f:id:tyoshikawa1106:20170323014642p:plain

SFDC:Files Connectの認証情報設定で注意すべきこと

Files ConnectをつかえばChatterファイルからGoogle Drive APIをつかってファイルを参照できるようになります。


この機能を利用するときに注意するべき点があります。OAuth同意画面のユーザーに表示するサービス名を設定する部分です。
f:id:tyoshikawa1106:20170323010235p:plain


ここに入力した値がSalesforceからGoogleドライブに接続する際の認証画面にタイトルとして表示されます。この値ですが何を入力しても問題ないわけではありません。Googleドライブにアクセスするので「Google Drive」にしようと設定したことがあります。


その結果、Googleから利用規約に違反しているので3日以内に修正対応してください。改善されない場合は対象プロジェクトを停止します。と通知メールを受け取ることになりました。


Googleの製品と誤認させる名称は許可されないようにチェックする仕組みがあるみたいです。(改めて考えてみれば当然の仕組みですが...)


こうした状況になってしまった場合ですが、「異議を申し立て」的なボタンからサポートに連絡することができます。(この辺りの手順と詳細については通知メールに記載があります。)


ボタンの名称が少し怖い感じがしますが利用してもぜんぜん怖いことにはなりませんでした。Google API Developer Consoleのページから利用できるのですが、ページは日本語で記載されているので内容をよく見て判断することができます。


基本的にはどのように修正したかをサポートの方に報告するための機能となっていましたが、修正方法がわからない場合も質問することができるようです。困ったときは放置せずにきちんと問い合わせを行うと丁寧に対応してもらえると思います。


今回は通知メールに記載されたとおり、同意画面の表示内容を修正して「異議を申し立て」ボタン経由でサポートに連絡したところすぐに解決しました。異議という単語でなんとなく悪いことをしている気分になりますがそんなことはないのできちんと対応した方が良さそうです。


利用規約違反の通知を見て慌てて設定を削除して対応しようとすると逆にサポートへの連絡ができなくなってしまうと思います。そうすると利用規約違反の記録が残り続けることになる可能性も考えられます。(確認はしたことありませんが) 設定削除による対応は何も解決しないのでやらない方がいいと思います。


今回はGoogleでしたが他のサービスでも同じようなチェックがあると思いますので、製品名を認証タイトルに指定するのは避けたほうが良さそうです。Files Connectの認証情報設定を行うときはこうしたことにも注意が必要となります。

SFDC:プロセスビルダーのChatter投稿機能でメンション先を動的に設定する方法

プロセスビルダーをつかえばワークフロールールと同じようにレコードの作成と更新時に処理を行うことができます。さらにワークフロールールではサポートしていなかったChatter投稿も行うことが可能です。Chatter投稿では特定のユーザにメンションを付けることも可能となっています。
f:id:tyoshikawa1106:20170323001913p:plain

f:id:tyoshikawa1106:20170323001928p:plain:w300


ですが実際にメンションを行う場合、動的に切り替えたいというケースが多々あると思います。そんなときは次のような書き方がサポートされています。

@[{![Contact].OwnerId}]

f:id:tyoshikawa1106:20170323002110p:plain:w300


こんな感じです。
f:id:tyoshikawa1106:20170323002441p:plain

f:id:tyoshikawa1106:20170323002455p:plain

利用時に注意すること

Name項目ではなくユーザIDを指定することでメンションとして認識される仕組みとなっています。数式のID文字列が認識されるかはちょっと確認してみませんが、おそらくサポートされるのやユーザの参照項目ぐらいだと思います。


所有者などユーザ項目の値にはコミュニティユーザを指定するケースもあると思います。
f:id:tyoshikawa1106:20170323003203p:plain


これで社内組織からレコード更新時に特定のコミュニティユーザにメンション通知できそうですが、実際に投稿された内容を見るとアクセス権限が付与されていないことがわかります。
f:id:tyoshikawa1106:20170323003450p:plain


Chatter投稿先をプロセスビルダーで指定していないためです。
f:id:tyoshikawa1106:20170323003533p:plain


もしかするとどこかで指定できるかもしれませんが、おそらくサポートされていないと思います。


社内ユーザがApexバッチなどで一括処理を行いその結果をコミュニティユーザにChatter経由で通知したい。と思ってもおそらくこの方法では対応できないと思います。(検証はしていませんが社内ユーザがコミュニティ組織に移動して処理を行えばもしかするとうまくいくかもしれません。)


またDEV環境で再現できなかったのですが、ユーザの参照項目をつかって動的にメンション指定する際にそのユーザがレコードのアクセス権限自体をもっていない場合、プロセスビルダーで認識されないと思われます。その結果、メンション指定されているのにユーザIDが存在しないことでシステムエラーが発生します。(再現しなかったのでもしかすると設定中にうっかりミスがあっただけかもしれませんが...) プロセスビルダーのシステムエラーメッセージは原因を確認しずらいので注意が必要です。

SFDC:Apexテストクラスで標準価格表IDを取得する方法

Apexテストクラスで標準価格表IDをSOQLをつかって取得するとき、システム項目ではないので@isTest(SeeAllData=true)を宣言しないと取得することができません。そのため次のようにメソッドレベルで宣言して取得したりします。
f:id:tyoshikawa1106:20170320123422p:plain


SOQLクエリはこんな感じです。
f:id:tyoshikawa1106:20170320123454p:plain



ですがこんなことしなくてももっとキレイに実装する方法がありました。
Test.getStandardPricebookId()を使う方法です。


次のように宣言すると標準価格表のIDを取得できます。

Id pricebook2Id = Test.getStandardPricebookId();


これをつかって直したのがこちら。
f:id:tyoshikawa1106:20170320124653p:plain


変更後にテストクラスを実行するとエラーなくテストできました。
f:id:tyoshikawa1106:20170320124722p:plain


このメソッドはSummer'14の頃に追加されていました。不要なSeeAllDate=trueの宣言もなくなりキレイに実装できて便利です。
f:id:tyoshikawa1106:20170320125031p:plain

http://successjp.salesforce.com/features/pdf/Summer14_ReleaseNotes.pdf

参考

Test.getStandardPricebookId()を使う方法はQiitaで知りました。

SFDC:LEXでFiles Connectのファイルにアクセスする方法

Files Connectの機能を使えばChatterファイルからGoogleドライブのファイルにアクセスできるようになります。
f:id:tyoshikawa1106:20170319172248p:plain


Salesforce ClassicではChatterタブから見れるのですがLightning Exprienceでは表示されませんでした。
f:id:tyoshikawa1106:20170320115251p:plain


ファイル関連リストに移動してもダメそうです。
f:id:tyoshikawa1106:20170320115325p:plain


試しにファイルタブの方を確認してみました。表示していない場合はアプリケーションランチャーからアクセスできます。
f:id:tyoshikawa1106:20170320115509p:plain


試してみたところファイルタブの方で無事表示されていました。
f:id:tyoshikawa1106:20170320115549p:plain


Files Connect利用時には次のようにアプリケーションにファイルタブを出しておくと良さそうです。
f:id:tyoshikawa1106:20170320115830p:plain

f:id:tyoshikawa1106:20170320120116p:plain


Classic版でもファイルタブがあったほうが便利になると思います。
f:id:tyoshikawa1106:20170320120202p:plain