Lightning Sync for Googleを試してみた

Qiita初投稿です。
九州のIT系の集まりにお誘いいただく機会も増えたのですが、そこで非常に多くのエンジニアの方に

- Salesforceってクローズドなイメージがある
- ハードルが凄く高いイメージがある

こういう感じのお話をよくいただきます。
私自身、ここ何年かどうにかSalesforceのエンジニアを増やせないものかと考えていましたが、何故増えないのか、皆さんに興味を持っていただけないのかなんとなくわかりました。

**要はオープンな情報がまだまだ少ない**

そういうことなんだと思いました。
ググっても何名かの有名な方の記事や企業の技術ブログは出てきますけど、それも他のものと比べたら少ないですもんね…。

ということで、のんびり不定期ですが私も投稿してみたいなーと思います！


さて本題。
先日のWinter'17でLightning Sync For Googleがベータで利用できるようになりました。今回は、その設定手順がヘルプを見ながらだと凄くわかりにくくて時間かかったので、自分なりにまとめてみました。

Googleからの片道通行ですが、SalesforceにGoogleカレンダーが同期されるようになるので、Googleカレンダーをメインでお使いの方には非常に便利なのかなと思います。

**※G Suit（昔のGoogleApps）が必要です。個人アカウントはダメぽい**

#Googleのサービスアカウントを取得する
まずはサービスアカウントを取得する必要がありますので、ご自身が管理者の場合は管理者のユーザで、そうでない場合は管理者の方に以下の手順で取得していただきます。

0. 「Google Cloud Platform」に管理者ユーザでログインする
1. 「プロジェクト」を何でもいいので作成する（後で管理できるように何かわかりやすい名前にしておきましょう）
2. 「API Manager」→「APIを有効にする」の順に開き「**Calendar API**」を選択
3. 「API Manager」→「認証情報」を開き、「認証情報を作成」ボタンから「**サービスアカウントキー**」を選択
![2017-01-21_17h41_27.png](https://qiita-image-store.s3.amazonaws.com/0/160895/976c76bc-28c0-2d76-8e87-2a935047a684.png)
4.  「サービスアカウント」は下図のようにデフォルトで準備されているもので構わないので選択し、「キーのタイプ」は「**JSON**」を選択
![2017-01-21_17h41_57.png](https://qiita-image-store.s3.amazonaws.com/0/160895/cbf540d2-91c3-4d92-dd40-83a5ba6c1ed2.png)
5. 作成が完了すると元の画面に戻るので、作成されたサービスアカウントキーのところの右側の方に「**サービスアカウントの管理**」というリンクがあるのでクリック。「IAMと管理」の「サービスアカウント」の画面に遷移します
6. 下図のように作成したサービスアカウントの「**編集**」をクリック
![2017-01-21_17h42_51.png](https://qiita-image-store.s3.amazonaws.com/0/160895/90d06d96-afb4-da12-dd80-239b308c0198.png)
7. 「**G Suite ドメイン全体の委任を有効にする**」にチェックを入れて保存。この時、JSONデータが勝手にダウンロードされるはずなので保存しておく
8. 元の画面に戻ったら、「**クライアントIDを表示**」をクリック
9. クライアントIDは後で設定に必要になるのでメモしておく。以上で、サービスアカウントの取得は完了です！
![2017-01-21_17h43_43.png](https://qiita-image-store.s3.amazonaws.com/0/160895/5be4152f-17f8-018c-4205-f3a70b1057a4.png)

#G Guitのセキュリティ設定を調整
次にG Guitの管理コンソールで、先ほど登録をしたサービスアカウントが自由にクライアントのカレンダーデータにアクセスできるように設定します。

0. 管理コンソールを開き「セキュリティ」→「詳細設定」→「**API クライアント アクセスを管理する**」の順に開く
1. 開いたら、以下のように入力をし「**承認**」ボタンをクリック
 - クライアント名･･･先ほどメモしておいた「クライアントID」
 - 1つ以上のAPIの範囲･･･https\://www.googleapis.com/auth/calendar.readonly
![2017-01-21_17h47_01.png](https://qiita-image-store.s3.amazonaws.com/0/160895/7425fdc8-f115-ecbc-b6cf-5a0f2df30db0.png)

以上でGoogle側の設定はすべて終了です！

#SalesforceのLightning Syncを設定する
いよいよSalesforce側の設定です。あとちょっとなので頑張って進めましょう！

0. クイック検索に「Sync」と入れると「**Syncの設定**」と出てきますので、そちらをクリック（Sync設定ではない！）
1. 「Lightning Sync の設定」が開くので、まずは「Lightning Sync の有効化」のところで有効化をする
2. 有効化したら次の「Salesforce をメールサーバに接続」のところで「**Google の OAuth 2.0 (ベータ)**」を選んで保存
3. 「Google 非公開鍵のアップロード (ベータ)」のところで、サービスアカウントの作成の7番のところで取得したJSONデータをアップロード
4. 最後に「接続テスト」でその**G Guitの組織で発行されたメールアドレス**を入力して、テストを行って成功すれば設定完了です！

#Syncする人を設定する
最後に、どのユーザのカレンダーを同期するのか設定をします。

0. クイック検索に「Sync」と入れると「**Sync設定**」と出てきますので、そちらをクリック（「Syncの設定」ではない！さっきと違うよ！）
1. 「新規Lingtning Sync設定」をクリック
2. 下図のような感じでユーザ選択などをして保存。これで全ての設定が完了です！
![2017-01-21_18h40_09.png](https://qiita-image-store.s3.amazonaws.com/0/160895/8a9b6c0b-cbe1-ee89-15f7-ec10dfb624cf.png)

※Googleとの連携はGoogle to Salesforceの片道のみです。ご注意ください！

#結果
これが･･･
![2017-01-21_18h50_12.png](https://qiita-image-store.s3.amazonaws.com/0/160895/782cc3e9-0a3e-8463-7fd4-97130c30adcc.png)

こんな感じに無事同期されました！
![2017-01-21_18h51_41.png](https://qiita-image-store.s3.amazonaws.com/0/160895/25fddf19-c765-ed1f-8127-2060f1a72984.png)

まぁ･･･キャプチャだけじゃ作ったのか連携されたのかわからないですよね･･･:cry:

##補足
同期が上手くいってるのかなーとか思った時は、「同期状況」から確認ができますので、そちらで確認をしてみてください。また、カスタムレポートタイプ作成時に「LightningSyncErrors」というオブジェクトが主オブジェクトで選択できるので、そちらを管理レポートとして作っておくのもいいかもしれません。

##Tips
たぶん、「途中でユーザのメールアドレス変更したらどうなるの？」と思う方もいらっしゃると思います。その時は、変更後に上記の「同期状況」から該当ユーザを選択して「**同期のリセット**」を押すといい感じになるみたいです。