はじめに
はい。どーも。奴賀(ぬか)です。 皆さん。参加したい勉強会があったのに、気づいたら会議を設定されていたことはありませんか? 今回は、Doorkeeperから自分の興味のあるイベント情報(私の場合はAWS)を取得して、Salesforceのカレンダーに登録する方法をご紹介しようと思います。 毎週月曜日に、翌週一週間のイベントをカレンダーに登録しようと思いますので、 これで、「あの勉強会参加したかったのに(´゚ω゚`)ショボッ」となることが、ある程度防げますね♪ (ここでは、月曜日~日曜日を一週間として考えます)
前準備
- Doorkeeper APIを利用するために 今回はイベント情報を取得するために Doorkeeper を利用させて頂きます。 Doorkeeperに登録後、 DoorkeeperAPI を利用するために、プロフィールの編集からアプリケーションを登録して、Public API Access Tokenを取得しましょう。
- Salesforceのネットワーク設定 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_メイン処理実行スクリプトのみの設計とします。
コンポーネント詳細
スクリプトで利用される4つのコンポーネントに関して、詳しく見ていきましょう。
イベント取得期間設定(マッピング)
毎週月曜日に翌週一週間分の情報を登録するために、
現在日時を取得し時分秒をゼロクリアした状態の、
一週間後を since に、二週間後を until に設定します。
イベント情報取得(GET実行)
登録だけならソートは必要ないですが、デバッグのやり易さを考慮してイベントの開始日時でソートするようにします。 また、件名および詳細に「AWS」を含むイベントだけ取得します。このあたりは変更する予定はないので、プロパティに直接持たせています。
[レスポンス設定]プロパティの[データ形式]は[JSON]とし、 [ヘッダ設定]プロパティの[リクエストヘッダ]には、 Authorization Bearer として、前準備で取得した DoorkeeperAPI の Public API Access Token を設定します。
カレンダー登録内容設定(マッピング)
カレンダーに登録する内容ですが、私は乗り物酔いがひどいので「東京」で行われるイベントのみ登録することとします。 その他の設定は下記とします。
項目 | 説明 |
Subject | 件名。イベントの件名です。 |
Description | 説明。イベントの詳細情報です。 |
Location | 場所。イベントが行われる場所です。 |
StartDateTime | 開始日時。イベントの開始日時です。 |
EndDateTime | 終了日時。イベントの終了日時です。 |
ShowAs | 予定の公開方法。今回は「外出中」とします。 |
カレンダー登録(データ書き込み(INSERT))
カレンダーに登録するための Event オブジェクトのスキーマ定義です。各項目に関しては、上記のカレンダー登録内容(マッピング)で説明しております。
スケジュールトリガー(週単位)設定
「はじめに」でもお話したように、毎週月曜日に翌週一週間のイベント情報を取得・登録するためのスケジュールトリガーを設定しましょう。
出社前には見たいので、実行開始時間は朝7時とします。
スケジュールトリガー設定の前にDoorkeeper2Salesforceプロジェクトをサービスとして登録しておきます。
次に、下記の内容でスケジュールトリガーの設定を行います。
実行曜日 | 実行開始時間 | 休日の動作 | サービス | スクリプト |
月曜日 | 07:00 | 休日にも実行する | root@Doorkeeper2Salesforce | M_メイン処理実行 |
動作確認
ラッキーなことに、本Blog執筆時の今日は、9月25日(月)なので手動で実行します。 10月2日(月)~10月8日(日)の間の東京で行われるAWSのイベントが正しくカレンダーに登録されるでしょうか。
正しく登録されましたd(*'-'*)b イエーイ あとは、設定してあるスケジュールトリガー(週単位)が毎週イベントを登録してくれるので、どんなイベントが登録されるのかワクワクしながら業務に専念できます♪
このスクリプトをさらに改良するならこの辺りでしょうか。
- 交通系のAPIと連携し、イベント場所への移動時間を考慮したカレンダー登録とする
- カレンダー系のAPIと連携し、日本の祝日をカレンダー登録し休みの日のイベントかどうかを分かりやすくする
- ChatToolと連携し、毎日定時ごろに翌日のイベント情報をチャットに通知する
おわりに
今回は需要の多いSalesforceカレンダーとの連携をご紹介させていただきました。 もっとシャレオツなカレンダーを表示したいと思われたのなら、弊社製品の mitoco はいかがでしょうか。 このように カレンダーの公開方法を変更すれば、イベント参加への楽しみがプチ上昇ですね。 SkyOnDemand とあわせて、ご検討いただければ幸いでございます。 では(´ω`)ノ