読者です 読者をやめる 読者になる 読者になる

tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Classic向けVFページでLightning Design System適用時にスタイルを整える方法

Classic向けVisualforceページを開発したときに見た目で気になる部分がでてくると思います。周りの余白部分です。
f:id:tyoshikawa1106:20170419233053p:plain


Salesforce標準スタイルが適用されるためなので仕方がない部分ですが、SLDSを適用するような画面ではできれば余白を無くしたくなると思います。


そんなときは下記スタイルを読み込ませれば回避できそうです。

<style>
    .noSidebarCell, .sidebarCell .fixed {
        padding: 0 !important;
    }
</style>


これで周りの余白を無くしスッキリしたデザインにすることができました。
f:id:tyoshikawa1106:20170419233609p:plain

サンプルコード

<apex:page showHeader="true" sidebar="false" id="page">
    <!-- Lightning Design System -->
    <apex:slds />
    <style>
        .noSidebarCell, .sidebarCell .fixed {
            padding: 0 !important;
        }
    </style>
    <!-- App -->
    <div xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="vf-page">
        <div class="slds-page-header">
            <div class="slds-grid">
                <div class="slds-col slds-has-flexi-truncate">
                    <div class="slds-media slds-no-space slds-grow">
                        <div class="slds-media__figure">
                            <svg class="slds-icon slds-icon-standard-user" aria-hidden="true">
                                <use xlink:href="{!URLFOR($Asset.SLDS, '/assets/icons/standard-sprite/svg/symbols.svg#user')}"></use>
                            </svg>
                        </div>
                        <div class="slds-media__body">
                            <p class="slds-text-title--caps slds-line-height--reset">Record Type</p>
                            <h1 class="slds-page-header__title slds-m-right--small slds-align-middle slds-truncate" title="this should match the Record Title">Record Title</h1>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</apex:page>

SFDC:Classic向けVisualforce開発でLightning Design Systemを適用する方法

Lightning Design SystemはLEX向けの画面開発で活躍すると思いますが、Classic向けのページを開発する際にも利用したくなるケースがあると思います。ですがサイトからダウンロードしたCSSを適用すると次のように標準CSSに干渉してしまいます。

f:id:tyoshikawa1106:20170419232506p:plain

<apex:page showHeader="true" sidebar="false" id="page">
    <!-- Lightning Design System -->
    <apex:stylesheet value="{!URLFOR($Resource.SLDS221, 'assets/styles/salesforce-lightning-design-system.css')}" />
    <!-- App -->
    <div xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="vf-page">
        <div class="slds-page-header">
            <div class="slds-grid">
                <div class="slds-col slds-has-flexi-truncate">
                    <div class="slds-media slds-no-space slds-grow">
                        <div class="slds-media__figure">
                            <svg class="slds-icon slds-icon-standard-user" aria-hidden="true">
                                <use xlink:href="{!URLFOR($Resource.SLDS221, '/assets/icons/standard-sprite/svg/symbols.svg#user')}"></use>
                            </svg>
                        </div>
                        <div class="slds-media__body">
                            <p class="slds-text-title--caps slds-line-height--reset">Record Type</p>
                            <h1 class="slds-page-header__title slds-m-right--small slds-align-middle slds-truncate" title="this should match the Record Title">Record Title</h1>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</apex:page>


この問題は、apex:sldsタグを利用することで解決できそうです。
f:id:tyoshikawa1106:20170419231652p:plain


これで標準CSSに影響を与えずにCSSを適用できました。
f:id:tyoshikawa1106:20170419231727p:plain


apex:sldsタグを使った場合、lightning-design-system-vf.min.jsと「-vf」のついたVF向けCSSが適用されるためです。
f:id:tyoshikawa1106:20170419231930p:plain


Lightning Design Systemのサイトからダウンロードすると-vfのJSファイルは含まれていません。そのため過去のバージョンの古いCSSファイルから引っ張ってくる必要があると思っていました。apex:sldsタグでは比較的最新バージョンの-vf版CSSが適用されるので古いバージョンを使いまわす必要もないようです。

サンプルコード

<apex:page showHeader="true" sidebar="false" id="page">
    <!-- Lightning Design System -->
    <apex:slds />
    <!-- App -->
    <div xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="vf-page">
        <div class="slds-page-header">
            <div class="slds-grid">
                <div class="slds-col slds-has-flexi-truncate">
                    <div class="slds-media slds-no-space slds-grow">
                        <div class="slds-media__figure">
                            <svg class="slds-icon slds-icon-standard-user" aria-hidden="true">
                                <use xlink:href="{!URLFOR($Asset.SLDS, '/assets/icons/standard-sprite/svg/symbols.svg#user')}"></use>
                            </svg>
                        </div>
                        <div class="slds-media__body">
                            <p class="slds-text-title--caps slds-line-height--reset">Record Type</p>
                            <h1 class="slds-page-header__title slds-m-right--small slds-align-middle slds-truncate" title="this should match the Record Title">Record Title</h1>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</apex:page>

SFDC:顧客に一括メールを送信するときの流れ

キャンペーンのお知らせなど顧客に一括メールを送信するときの流れです。大勢の顧客に1件ずつメールを送付していくのは時間も掛かり現実的ではありません。Salesforceには取引先責任者に登録されたメールアドレス宛に一括メールを送信する機能が用意されています。

f:id:tyoshikawa1106:20170413010948p:plain


マージ機能と同じようにビューをつかったレコードの絞り込みが可能です。
f:id:tyoshikawa1106:20170413011117p:plain


メールの件名や本文はメールテンプレートをつかって指定できます。
f:id:tyoshikawa1106:20170413011248p:plain


送信前に対象件数やその他オプションを指定できます。
f:id:tyoshikawa1106:20170413011406p:plain


送信ボタンをクリックするとメール送信処理が実行されます。
f:id:tyoshikawa1106:20170413011909p:plain


この方法でメール送信すると活動履歴に残すこともできます。
f:id:tyoshikawa1106:20170413011947p:plain


メールはsalesforce経由で送信されたことが受信者に表示されました。そのあたりは意識しておいた方がいいかもしれません。
f:id:tyoshikawa1106:20170413012213p:plain


送信処理後ですが送信件数などの情報が通知メールで届きます。
f:id:tyoshikawa1106:20170413012543p:plain


私の設定で履歴を確認できるみたいです。
f:id:tyoshikawa1106:20170413012632p:plain


メールはログインユーザの名義で実行されます。システムの通知などは専用のアカウントでログインして実行した方が良さそうです。また重複データに対してメール送信したところ受信側には一件のみ届くようになっていました。基本的には重複データは整理してから実行した方がいいですが誤って選択しても大丈夫です。

メール送信したくない顧客への対応

一括メール送信時に特定の顧客にはメールを送りたくないケースもあると思います。その場合はメール送信除外フラグの項目を利用すればいいみたいです。

メール送信除外フラグとはどのような場合に考慮されるのでしょうか?


このフラグをONにすれば一括メール送信の対象にはならないそうです。
f:id:tyoshikawa1106:20170413013622p:plain


対象判定は自動で行われるため一括メール送信画面のビューで項目を条件指定に利用することはできませんでした。メール送信対象が少数の場合は基本ONにしておいて一部をOFFに切り替える運用の方が間違いがないかもしれません。

SFDC:重複登録された顧客情報をマージするときの流れ

Salesforceでは顧客情報を取引先と取引先責任者に登録して管理を行います。データ登録の業務中にうっかり同じ顧客の情報を重複して登録してしまったり、Force.comサイトなど外部に公開されたWebページから顧客が複数回登録するといったケースがあると思います。
f:id:tyoshikawa1106:20170413003355p:plain

f:id:tyoshikawa1106:20170413003723p:plain


そういったデータはSalesforceのマージ機能を使って1つにまとめることができます。
f:id:tyoshikawa1106:20170413004052p:plain


マージ機能には検索機能も用意されているため対象レコードを簡単に選択できるようになっています。
f:id:tyoshikawa1106:20170413004151p:plain


次のように基準となるレコードの選択と残したい値を個別に選ぶことが可能です。
f:id:tyoshikawa1106:20170413004341p:plain


マージを実行すると元に戻せないので注意して実行する必要があります。
f:id:tyoshikawa1106:20170413004424p:plain


実行すると複数あったレコードが1つにまとまります。
f:id:tyoshikawa1106:20170413004602p:plain


それぞれに紐付いていた取引先責任者などの関連リストの情報も引き継ぐことができます。
f:id:tyoshikawa1106:20170413004753p:plain


取引先責任者関連リストから取引先責任者のマージも同様の手順で実行できます。
f:id:tyoshikawa1106:20170413004903p:plain

f:id:tyoshikawa1106:20170413005004p:plain


ポータルユーザの有無も表示されます。Community Cloudを利用している組織では重宝すると思います。
f:id:tyoshikawa1106:20170413005045p:plain


これで複数登録されていた取引先責任者も1つにまとめることができました。
f:id:tyoshikawa1106:20170413005131p:plain:w300


取引先責任者のマージは同じ取引先に存在しているレコードが対象となります。そのため取引先のマージ→取引先責任者のマージという手順で進める必要があります。


取引先のときと同様でケースなどの関連先情報も引き継ぐことができます。
f:id:tyoshikawa1106:20170413005304p:plain


マージ処理を行うと最終更新日が更新されます。処理としてはUPDATEとDELETEが実行されるためです。Apexトリガなどが用意されている組織ではそのあたりを意識する必要があります。


また項目履歴の管理機能を利用している場合、マージされた履歴が残るようになっていました。


最後に重複データの洗い出しはサマリレポートで抽出するのが便利だと思います。
f:id:tyoshikawa1106:20170413003957p:plain


Salesforceのマージ機能をつかえば比較的簡単に組織のデータキレイにすることができます。マージ機能をつかえばあとからデータをキレイにできますが基本的には重複データは残さない仕組みを用意するのがいいと思います。例えば名前項目+メールアドレスを組み合わせた一意の外部ID項目を用意してUPSERT処理で登録するようにすれば重複データ登録を回避できると思います。


マージ機能ですが現時点ではClassicページでの利用のみサポートされていたと思います。LEXを利用している場合は一時的に戻してからの利用となります。

関連記事

SFDC:Lightning Experienceのメール送信機能を試してみました

Lightning Experienceのメール送信機能を試してみました。活動関連リストまたはメール送信ボタンから利用できるようになっているようです。
f:id:tyoshikawa1106:20170402180825p:plain


CCの指定も可能です。また取引先責任者やユーザの情報を元の予測検索の機能も用意されていました。
f:id:tyoshikawa1106:20170402181136p:plain:w300


関連先として取引先などと紐つけることも可能です。
f:id:tyoshikawa1106:20170402181239p:plain:w300


メールのプレビュー機能も用意されています。
f:id:tyoshikawa1106:20170402181356p:plain

f:id:tyoshikawa1106:20170402181415p:plain:w300


その他下記のオプションが用意されています。

  • ファイル添付
  • 差し込み項目の挿入
  • テンプレートの挿入
  • クリア


メール送信を行うと次のメッセージが表示されます。
f:id:tyoshikawa1106:20170402181633p:plain


受信メールはこんな感じです。
f:id:tyoshikawa1106:20170402181855p:plain


Salesforce経由でメールを送信しても送信元のメールアカウントには送信履歴が残ります。(送信者側にはsalesforce.com経由と表示されます。)
f:id:tyoshikawa1106:20170402182235p:plain


この機能のすごいところは、Salesforceの活動履歴にメールの履歴を記録できることです。
f:id:tyoshikawa1106:20170402182539p:plain


詳細ページに移動すれば本文や添付ファイル、送信者と受信者などの情報にアクセスできます。
f:id:tyoshikawa1106:20170402182919p:plain


試してみた所、送信したメールへの返信は記録されませんでした。(さすがに認識できないか)


もちろん送信元のメールアカウント側ではやりとりできますので初回のメール送信のみSalesforceから送る形になると思います。それでも日付と宛先をSalesforce上に記録できるメリットが残ります。複数の営業担当者が同じ顧客に複数回メールを送ってしまうような問題回避にも繋がりそうです。

追記

リリースノートにメールの返信機能の記載がありました。返信できるということは受信もできると思います。今回ヘルプまでは確認していないのですが設定等あるみたいです。
f:id:tyoshikawa1106:20170402184139p:plain

リリースノート

SFDC:Lightning Experienceのグローバル検索とオブジェクト検索について

Lightning Experineceでも画面中央にグローバル検索機能が用意されています。
f:id:tyoshikawa1106:20170402175002p:plain


取引先やレポートなどの情報はもちろんChatterフィードも検索できます。
f:id:tyoshikawa1106:20170402175055p:plain


通常グローバル検索にはオブジェクトなどの設定情報を検索する機能はありません。
f:id:tyoshikawa1106:20170402175156p:plain


ですが設定画面に移動時のみ通常の検索とは別に「設定」に対して検索することが可能となっています。
f:id:tyoshikawa1106:20170402175316p:plain


オブジェクトと項目を検索できました。
f:id:tyoshikawa1106:20170402175342p:plain


オブジェクトマネージャーまで移動して検索する必要がないので便利だと思います。

SFDC:Lightning Exceperienceとボタンとアクションの設定について

Lightning Experienceの編集ボタンですがSalesforce Classicのレイアウト設定と異なる内容が表示されています。
f:id:tyoshikawa1106:20170328233606p:plain


Lightning Experienceの編集ボタンの領域は「Salesforce1 および Lightning Experience アクション」で設定する仕様となっているためです。
f:id:tyoshikawa1106:20170328233844p:plain


レンチアイコンをクリックするとカスタマイズできます。
f:id:tyoshikawa1106:20170328233900p:plain


Classicとは別に独立する形で設定が可能となっています。配置した標準アクションの内いくつかの種類はExperienceでサポートされていないものがあるようです。こちらはSalesforce1用の設定でも利用されるのでそのために配置できるのだと思います。


ひとつずつ設定する必要があるので少し大変ですが、設定しておくと使いやすくなると思います。またAppExchangeアプリをインストール時にアクションが追加されていることもあります。関係の無いオブジェクトにアクションを表示させても利用者が迷うだけなのできちんとメンテナンスしておくと良さそうです。