tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Lightning for Gmailを試してみました

GmailをSalesforceのレコードと紐つけることができるLightning for Gmailを試してみました。Summer'17の時点ではβ版アプリとなります。
f:id:tyoshikawa1106:20170623044700p:plain

1. 有効化

設定 → Lightning for Gmail で有効化できます。
f:id:tyoshikawa1106:20170623044822p:plain

2. Chrome拡張機能をインストール

f:id:tyoshikawa1106:20170623045044p:plain

Salesforce Lightning for Gmail - Chrome Web Store


これで準備完了です。Gmailにアクセスすると画面右側にSalesforceへのログインページが表示されます。
f:id:tyoshikawa1106:20170623045837p:plain

注意点
  • 通常のGmailアカウントでは利用できませんでした。
  • 利用にはG Suiteの環境が必要です。
  • Chromeの再起動も必要かも。


Salesforceにログインボタンをクリックすると利用するGmailアカウントの確認後にSalesforceへ接続を行います。今回はDeveloper Editonと接続して検証しました。別タブでログイン済だったこともあり次の画面が表示されました。
f:id:tyoshikawa1106:20170623050357p:plain:w300

f:id:tyoshikawa1106:20170623050415p:plain:w300


ログイン完了するとSalesforceの情報にアクセスできるようになります。ユーザ、取引先、カスタムオブジェクトと一通りアクセス可能なようでした。
f:id:tyoshikawa1106:20170623050454p:plain:w150

できること

1. Salesforceのレコード検索

f:id:tyoshikawa1106:20170623050925p:plain:w150

2. お知らせ

f:id:tyoshikawa1106:20170623051107p:plain:w150

3. ログインユーザ情報表示

f:id:tyoshikawa1106:20170623051126p:plain:w150

4. 取引先責任者の登録

メール作成を行っている際にToに指定されたアドレスがSalesforce内に存在するか判定してくれます。存在しない場合は取引先責任者として登録するか聞かれます。
f:id:tyoshikawa1106:20170623051327p:plain


新規作成リンクを選択すると入力欄が表示されます。初期値のセットはありませんでした。
f:id:tyoshikawa1106:20170623051500p:plain


必要事項を入力して・・・
f:id:tyoshikawa1106:20170623051615p:plain:w300


保存ボタンをクリックするとGmailのページから取引先責任者を登録できました。その後は取引先責任者とそれに関連する情報が表示されるようになりました。メール送信画面でSalesforceの情報にアクセスできるのはすごく便利そうです。
f:id:tyoshikawa1106:20170623051744p:plain:w300

5. パブリッシャーアクション

Lightning for Gmailの設定画面でパブリッシャーアクションの設定を行うとGmail内で利用できるようになります。
f:id:tyoshikawa1106:20170623052530p:plain
f:id:tyoshikawa1106:20170623052556p:plain:w150

重要な機能 - メールの取り込み

上記ではGmailからSalesforceのデータにアクセスできる機能について紹介しましたがこの機能のもっと重要な機能はメール情報の取込です。メールを開いた状態の場合に関連情報が表示されますが、そこに取込用のアイコンが表示されます。
f:id:tyoshikawa1106:20170623055534p:plain:w150


クリックするとメールの取込が完了しましたとメッセージが表示されます。その際に取引先責任者、ユーザ、その他関連するレコードに紐付いた状態で活動が登録されます。メール形式で登録されるので活動の画面から返信したりもできます。メールの本文を取り込めるので案件引き継ぎなどが発生したときでも、過去のメールのやり取りを引き継ぐことができます。


確認して見て気づいたのですがDeveloper Editonではメールの取込機能は利用できないようです。(取引先責任者の登録情報など設定の問題の可能性もあり)


また、本文が反映されるものとされないものがありました。どういうときに取り込みに失敗しているのかまだ原因を特定できていないのですが、使い方を何か間違っているだけかもしれません。


Lightning for Gmailはβ版ですがかなり便利な機能だと思います。過去のメール取込をメールの受信日時を判定して取り込んでくれたので必要に応じてSalesforce側に反映することができそうでした。

SFDC:Lightning Sync の設定を試してみました

GoogleカレンダーとSalesforceを連携できるLightning Syncを試してみました。事前にG Suiteの契約が必要と思われます。設定画面には記載がありませんでしたがヘルプにはβ版と記載がありました。Winter'17に公開された機能です。

f:id:tyoshikawa1106:20170623035004p:plain


1. Lightning Sync を有効化
編集ボタンを押してLightning Sync を有効化にチェックを付けます。
f:id:tyoshikawa1106:20170623035242p:plain


2. Salesforce をメールサーバに接続
Google の OAuth 2.0を選択します。
f:id:tyoshikawa1106:20170623035335p:plain


Google 非公開鍵のアップロードができるようになります。
f:id:tyoshikawa1106:20170623035407p:plain


非公開鍵はGoogleデベロッパーコンソールで用意できます。
https://console.developers.google.com/


詳細はSalesforceのヘルプに記載がありました。


ざっくりいうとGoogleデベロッパーコンソールで下記を作成します。
1. APIにアクセスするためのJSONファイル
2. クライアントID
3. G Suite側の設定 (クライアントIDをつかった認証設定)
4. リモートサイト設定で権限付与。 → https://www.googleapis.com


これでJSONファイルをアップロードできました。
f:id:tyoshikawa1106:20170623040702p:plain


G Siteの無い環境ではメールの接続テストでエラーが出て先に勧めませんでした。(クライアントIDを設定できないため)
f:id:tyoshikawa1106:20170623042027p:plain


G Suite側の設定は下記で行います。
https://admin.google.com/


通常のGmailアカウントでは利用できません。
f:id:tyoshikawa1106:20170623042158p:plain


今回の検証ではここから先には進めませんでしたが、手順についてはヘルプにわかりやすく記載があるので問題なさそうです。残りのLightning Sync 設定の作成を行ってユーザへの利用権限を付与するだけみたいです。

f:id:tyoshikawa1106:20170623042548p:plain

Lightning Sync 設定の作成

1. [設定] | [Lightning Sync] | [Sync 設定] を選択して [新規Lightning Sync 設定] をクリックします。
2. 任意の名前を入力して、[有効] を ON にします。
3. Lightning Sync 設定をユーザに割り当てます。
4. データセットの定義

追記

こちらのヘルプが一番最新みたいです。
f:id:tyoshikawa1106:20170623043432p:plain

Help | Training | Salesforce

SFDC:AppExchangeアプリのパッチの開発

AppExchangeアプリのパッチの開発についてです。


基礎となるデータモデルやビジネスロジックに影響を与えない変更を行う場合は、パッチを使用して対応します。このパッチ開発を行うときですが、AppExchangeパートナーの場合は専用の組織を使って開発ができるそうです。
f:id:tyoshikawa1106:20170621010003p:plain

SFDC:AppExchangeアプリでのバージョン番号の管理について

TrailheadでAppExchangeアプリ開発で必要になるパッケージのバージョン番号の管理について紹介されていました。



例えば次のバージョンがあるとします。→ AppXバージョン2.1.3


この場合は下記のように考えればいいみたいです。

  • メジャーバージョン番号(2)。メジャーバージョン番号が変更されたことは、製品の大幅な大幅な変更を意味します。
  • マイナーバージョン番号(1)。フィーチャを追加したり、製品で目立つものを変更したりすると、マイナーバージョン番号が変わりますが、以前と同じように機能します。
  • パッチのバージョン番号(3)。パッチのバージョン番号は、製品をパッチで更新するたびに変わります。

f:id:tyoshikawa1106:20170621004950p:plain



ルールをきちんと決めておくと余計な混乱が起きないように開発を進められそうです。

追記

「製品の最新バージョンはバージョン3.1.4です。あなたの製品の次のマイナーバージョン番号は何ですか?」とチャレンジにありました。
マイナーバージョン番号は真ん中の1なので次のマイナーバージョンでは2になります。なので 3.2.4・・と勘違いしたのですがマイナーバージョンが変わった場合はパッチのバージョン番号も0に戻ります。

ということで3.1.4の次のマイナーバージョンは3.2.0になります。

SFDC:AppExchangeアプリ開発でのアップデートの種類について

TrailheadにAppExchangeアプリ開発に関するモジュールを進めていた所、アップデートの種類について紹介がありました。


製品のアップデートには二つの考え方があるようです。

  • パッチ -製品の動作に影響を与えない、美容UXアップデートやバグ修正などのマイナーな変更。
  • アップグレード - 製品の動作や顧客とのやりとりの仕方を変える機能の新旧の変更。


英語のモジュールを無理やり日本語変換したものですがこういった考え方についての内容もありました。
f:id:tyoshikawa1106:20170621004515p:plain

SFDC:StandardControllerのaddFieldsとApexテスト

standardControllerのaddFieldsを利用すればクエリを投げずに追加で項目を取得することが可能です。

private void SampleController(ApexPages.StandardController stdController) {
    stdController.addFields(new List<String> {'Sample__c', 'Sample__r.Name'});
}


便利な処理ですが、テストクラスで下記エラーが発生することがあります。

System.SObjectException: You cannot call addFields when the data is being passed into the controller by the caller.


エラーの発生はテストクラス内で次のように対象オブジェクトをnewするような処理を書いたときに発生します。

SampleController cls = new SampleController(new ApexPages.StandardController(new Demo__c()));


回避方法を検索したところ、Test.isRunnningTestを利用する方法になるみたいです。

if (!Test.isRunningTest()) { 
    stdController.addFields(new List<String> {'Sample__c', 'Sample__r.Name'});
}      

参考

SFDC:Force.com移行ツールでApexクラスの削除

環境構築はこちら。


こんな感じにファイル一式を用意できれば大丈夫です。
f:id:tyoshikawa1106:20170618221225p:plain


build.propertiesで対象組織のユーザIDとパスワードを指定できます。
f:id:tyoshikawa1106:20170618221318p:plain


今回は例としてsample.pageを削除します。
f:id:tyoshikawa1106:20170618221455p:plain


removecodepkgフォルダにdestructiveChanges.xmlがあります。そこで削除対象のページ・クラスを指定します。
f:id:tyoshikawa1106:20170618221659p:plain


処理実行前にsalesforce_ant_39.0フォルダの下のフォルダに移動してください。

cd /Users/tyoshikawa1106/tools/salesforce_ant_39.0/src

ページ・クラス指定後に削除処理を実行します。

$ ant -Dpackage.xml=package.xml -f build.xml undeployCode


ant -Dpackage.xml=package.xml -f build.xmlまでは共通でその後が処理によって異なります。こちらはbuild.xmlファイルに実行できる処理が記載されています。
f:id:tyoshikawa1106:20170618222043p:plain


実行すると次のようになります。
f:id:tyoshikawa1106:20170618222810p:plain


実行後に対象ページにアクセスしようとすると削除されていることを確認できます。
f:id:tyoshikawa1106:20170618222851p:plain


無条件に削除できるのではなく、別のコンポーネントで呼び出したりされているときちんとエラーとなります。
f:id:tyoshikawa1106:20170618222936p:plain


運用組織の場合は通常のリリースと同じでApexテストが実行されます。