※ 2020年4月に「Office 365」は「Microsoft 365」に、2020年10月に「G Suite」は「Google Workspace」に名称変更されました。
システム連携ネタでよくブログを書いている日下です。
※ちなみにこれまでのネタはこちら
Questetra BPM Suite のお客様より Google カレンダー(Google Calendar)との連携について聞かれることがよくあります。
現在の機能では、
Questetra BPM Suite → Google カレンダー
の連携機能がありますが、逆向きはまだありません。
また、
カレンダーへの登録はちゃんとしておいたが、それに関する作業がモレてしまうので、どうにかしたい
という話もよく聞きます。
- カレンダーに往訪予定はちゃんと登録されているのに、その報告のモレが多い・・・
- カレンダーに作業予定を登録しておいたが、忙しくて対応がモレてしまった・・・
ということで、今回は Google カレンダーに登録した予定からワークフローを自動で開始する方法をご紹介します。
2: Google カレンダーと Questetra の連携の実現方法の概要
3: 実現方法の詳細
3.1: Questetra BPM Suite 側の準備
3.2: Google Apps Script 側の準備
1: ユーザの利用イメージ
今回は、営業の方がお客様への往訪予定登録~往訪報告するケースを対象とします。
- アポが入ったら Google カレンダーに登録する(キーワードとしてタイトルに「訪問」を含めて登録する)
- 当日になると往訪報告フローが Questetra BPM Suite で自動で開始される
- 往訪対応後に報告を入力する
同様の仕組みで、
- 情報システム部門の方が、システムのメンテナンス作業予定をカレンダーに登録しておいて、予定日になったらシステムメンテナンス向けのフローが自動で開始される
- マーケティング部門の方が、メールマガジン配信の予定をカレンダーに登録しておいて、準備日になったらメール配信向けのフローが自動で開始される
といったことにも対応できます。
2: Google カレンダーと Questetra の連携の実現方法の概要
- 毎日、早朝など決まった時刻に起動される Google Apps Script を準備する
- その Google Apps Script が起動されると Google カレンダーに登録されている当日のイベントがないかを見に行く
- もしイベントがあれば、タイトルにキーワード「訪問」が含まれているかをチェックする
- キーワードが含まれていれば、Questetra BPM Suite の対象プロセスモデルを起動するよう http リクエストを送信する
3: 実現方法の詳細
3.1: Questetra BPM Suite 側の準備
Google Apps Script からデータが送られてきたら起動するプロセスモデルを準備する。
「メッセージ開始イベント(HTTP)」というデータの受け口が必要となる。
※関連マニュアル M221: 特定URIにHTTPリクエストがあった時に自動的に開始されるように設定する
※Google Apps Script との接続部分はリリースをしないと確定されないので注意してください。リリース済で「メッセージ開始イベント(HTTP)」のプロパティの「URL・パラメータ詳細」を開くと以下のような画面が表示されますので、それにあわせて次の Google Apps Script 側の準備を進めてください。
3.2: Google Apps Script 側の準備
Google カレンダーに登録されているイベントを参照して、Questetra BPM Suite を起動する Google Apps Script を準備する。
※以下のサンプルに対応した簡単なアプリアーカイブ(往訪報告)を準備してあります。ダウンロードはこちらから。サンプルそのままで試す場合でも、少なくともアプリをインポートした Questetra BPM Suite の環境にあわせて、URL, KEY, PROCESS_MODEL_INFO_ID と USER_EMAIL の変更が必要になります。
※Google Apps Script の設定方法は一般的な話になりますので、詳細は割愛します。こちらのサイト等を参考にしてください。こちらのサイトの説明では Google Spreadsheet と連動するタイプの Google Apps Script の起動となっていますが、今回のサンプルの内容であれば、スタンドアロンの Google Apps Script でも動きます。
サンプルコード
var URL = "https://xxxxx.questetra.net/System/Event/MessageStart/start";
var KEY = "xxxxx";
var PROCESS_MODEL_INFO_ID = "xxx";
var NODE_NUMBER = "0";
var USER_EMAIL = "xxx@xxx";
var KEYWORD = "訪問";
function startWorkflow() {
var today = new Date();
var cal = CalendarApp.getCalendarById(USER_EMAIL);
var evts = cal.getEventsForDay(today); //本日のカレンダーイベント取得
//取得したカレンダーイベントでループ
if (evts.length > 0){
for (var i in evts) {
var evt = evts[i];
var eventTitle = evt.getTitle();
//KEYWORDを含むイベントのみプロセス開始
if (eventTitle.indexOf(KEYWORD) >= 0) {
var url = URL;
var payload = "processModelInfoId=" + PROCESS_MODEL_INFO_ID;
payload += "&nodeNumber=" + NODE_NUMBER;
payload += "&key=" + KEY;
payload += "&title=" + eventTitle;
payload += "&data[0].email=" + USER_EMAIL;
payload += "&data[1].input=" + Utilities.formatDate(evt.getStartTime(), "JST", "yyyy-MM-dd");
var params = {
method: 'post',
payload: payload
};
var httpResponse = UrlFetchApp.fetch(url, params);
}
}
}
}
サンプルコードから編集すべき部分は以下の通り。
-
- 1~4行目、対象の Questetra BPM Suite 環境にあわせて変更。
var URL = "https://xxxxx.questetra.net/System/Event/MessageStart/start";
var KEY = "xxxxx";
var PROCESS_MODEL_INFO_ID = "xxx";
var NODE_NUMBER = "0";
-
- 6行目、メールアドレスを自分のアドレスに変更。
var USER_EMAIL = "xxx@xxx";
-
- 7行目、キーワードを指定したいものに変更。
var KEYWORD = "訪問";
手動でのスクリプト実行は、スクリプトエディタの以下の部分で function を指定してボタン押下すればできます。
この Google Apps Script を初めて実行する際にはカレンダーアクセスに対して「承認」が求められますので、承認して進めてください。
また、この Google Apps Script の処理が毎日実行されるようにするには、以下の設定が必要になります。
1. 「編集」メニューから「現在のプロジェクトのトリガー」を選択
2. 「トリガー」追加のため真ん中のリンクをクリック
3. 以下のように function を指定して、「時間主導型」・「日タイマー」・実行させたい時刻を選択して、「保存」クリック
もし複数のユーザのカレンダーを参照したい場合には、権限のあるアカウントで Google Apps Script を準備し、カレンダーを参照して処理する部分をループさせる必要があります。
複数のユーザのカレンダーを参照するのであれば、Google Spreadsheet 上にデータを持たせて、その Google Spreadsheet に付随する Google Apps Script で準備するのがよいかと思います。
また、Google Apps Script を使えば、Google カレンダーのイベントを参照するだけではなく、逆に Google カレンダーにイベントを登録する、といったことも可能です。
例えば、レビュー依頼をするプロセスで、レビュー終了期限が自動でカレンダーに入るようにするといった形でしょうか。それは別の機会に紹介させていただきます。
ご質問等ございましたら、お問合せフォームから日下(くさか)宛てにご連絡ください。
<関連情報>
「Questetra BPM Suite」は 「G Suite(Google Apps)」との連携機能 を備えており、その詳細についての資料も公開しています。
無料からスタートできる Questetra BPM Suite
こちらの Web フォームからお申込みいただきますと Questetra の無料お試しアカウントが作成できます。上記のものを含め、全ての機能が使えますので、ぜひお試しください。
ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra
ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra