2017.09.28

SalesforceのカレンダーにDoorkeeperのイベントを登録してみる

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

はじめに

はい。どーも。奴賀(ぬか)です。
皆さん。参加したい勉強会があったのに、気づいたら会議を設定されていたことはありませんか?
今回は、Doorkeeperから自分の興味のあるイベント情報(私の場合はAWS)を取得して、Salesforceのカレンダーに登録する方法をご紹介しようと思います。
毎週月曜日に、翌週一週間のイベントをカレンダーに登録しようと思いますので、
これで、「あの勉強会参加したかったのに(´゚ω゚`)ショボッ」となることが、ある程度防げますね♪
(ここでは、月曜日~日曜日を一週間として考えます)

前準備

  1. Doorkeeper APIを利用するために
  2. 今回はイベント情報を取得するために Doorkeeper を利用させて頂きます。 Doorkeeperに登録後、 DoorkeeperAPI を利用するために、プロフィールの編集からアプリケーションを登録して、Public API Access Tokenを取得しましょう。
  3. Salesforceのネットワーク設定
  4. SkyOnDemandからSalesforceに対してのAPIリクエストを許可します。色々と方法はありますが今回はSalesforceのネットワーク設定を利用しようと思います。 Salesforceの画面より、[設定] > [セキュリティのコントロール] > [ネットワークアクセス] の [信頼済み IP 範囲] に、SkyOnDemandの連携サーバのIPアドレスを設定します。

開発作業

グローバルリソース設定

スクリプトで利用するグロバールリソースを下記の内容で設定します。

接続名 接続タイプ URL 備考
REST接続設定_DoorkeeperAPIエンドポイント REST(REST接続設定) https://api.doorkeeper.jp Doorkeeper APIを利用するためのグローバルリソース設定
Salesforce接続設定 API 34.0_カレンダー登録 Salesforce(Salesforce接続設定 API 34.0)
-
カレンダーを登録するSalesforce組織のグローバルリソース設定

SkyOnDemandスクリプト作成

それでは、早速スクリプトを作成していきます。
今回はシンプルな処理のため、M_メイン処理実行スクリプトのみの設計とします。

プロジェクト

M_メイン処理実行

コンポーネント詳細

スクリプトで利用される4つのコンポーネントに関して、詳しく見ていきましょう。

イベント取得期間設定(マッピング)

毎週月曜日に翌週一週間分の情報を登録するために、
現在日時を取得し時分秒をゼロクリアした状態の、
一週間後を since に、二週間後を until に設定します。

イベント取得期間設定(マッピング)

イベント情報取得(GET実行)

登録だけならソートは必要ないですが、デバッグのやり易さを考慮してイベントの開始日時でソートするようにします。 また、件名および詳細に「AWS」を含むイベントだけ取得します。このあたりは変更する予定はないので、プロパティに直接持たせています。

[レスポンス設定]プロパティの[データ形式]は[JSON]とし、
[ヘッダ設定]プロパティの[リクエストヘッダ]には、 Authorization Bearer として、前準備で取得した DoorkeeperAPI の Public API Access Token を設定します。

イベント情報取得(GET実行)

カレンダー登録内容設定(マッピング)

カレンダーに登録する内容ですが、私は乗り物酔いがひどいので「東京」で行われるイベントのみ登録することとします。 その他の設定は下記とします。

項目 説明
Subject 件名。イベントの件名です。
Description 説明。イベントの詳細情報です。
Location 場所。イベントが行われる場所です。
StartDateTime 開始日時。イベントの開始日時です。
EndDateTime 終了日時。イベントの終了日時です。
ShowAs 予定の公開方法。今回は「外出中」とします。

カレンダー登録内容設定(マッピング)

カレンダー登録(データ書き込み(INSERT))

カレンダーに登録するための Event オブジェクトのスキーマ定義です。各項目に関しては、上記のカレンダー登録内容(マッピング)で説明しております。

カレンダー登録(データ書き込み(INSERT))

スケジュールトリガー(週単位)設定

「はじめに」でもお話したように、毎週月曜日に翌週一週間のイベント情報を取得・登録するためのスケジュールトリガーを設定しましょう。 出社前には見たいので、実行開始時間は朝7時とします。
スケジュールトリガー設定の前にDoorkeeper2Salesforceプロジェクトをサービスとして登録しておきます。

次に、下記の内容でスケジュールトリガーの設定を行います。

実行曜日 実行開始時間 休日の動作 サービス スクリプト
月曜日 07:00 休日にも実行する root@Doorkeeper2Salesforce M_メイン処理実行

動作確認

ラッキーなことに、本Blog執筆時の今日は、9月25日(月)なので手動で実行します。
10月2日(月)~10月8日(日)の間の東京で行われるAWSのイベントが正しくカレンダーに登録されるでしょうか。

カレンダー

正しく登録されましたd(*'-'*)b イエーイ
あとは、設定してあるスケジュールトリガー(週単位)が毎週イベントを登録してくれるので、どんなイベントが登録されるのかワクワクしながら業務に専念できます♪

このスクリプトをさらに改良するならこの辺りでしょうか。

  • 交通系のAPIと連携し、イベント場所への移動時間を考慮したカレンダー登録とする
  • カレンダー系のAPIと連携し、日本の祝日をカレンダー登録し休みの日のイベントかどうかを分かりやすくする
  • ChatToolと連携し、毎日定時ごろに翌日のイベント情報をチャットに通知する
パッと思いつくものを列挙しましたが、どのようなスクリプトにすればいいかもパッと頭に浮かんできますね。
機会があれば、この辺りもご紹介させていただければと思います。

おわりに

今回は需要の多いSalesforceカレンダーとの連携をご紹介させていただきました。
もっとシャレオツなカレンダーを表示したいと思われたのなら、弊社製品の mitoco はいかがでしょうか。
このように カレンダーの公開方法を変更すれば、イベント参加への楽しみがプチ上昇ですね。 SkyOnDemand とあわせて、ご検討いただければ幸いでございます。 では(´ω`)ノ

19 件

関連する記事