Cloud Workflow

Googleカレンダー上の予定からワークフローを開始する方法

Googleカレンダー → Google Apps Script(GAS) → Questetra BPM Suite の連携事例です。

 

Questetra BPM Suite のお客様より Google カレンダーとの連携について聞かれることがよくあります。
現在の機能では、
Questetra BPM Suite → Google カレンダー
の連携機能がありますが、逆向きはまだありません。
また、
カレンダーへの登録はちゃんとしておいたが、それに関する作業がモレてしまうので、どうにかしたい
という話もよく聞きます。

  • カレンダーに往訪予定はちゃんと登録されているのに、その報告のモレが多い・・・
  • カレンダーに作業予定を登録しておいたが、忙しくて対応がモレてしまった・・・

ということで、今回は Google カレンダーに登録した予定からワークフローを自動で開始する方法をご紹介します。

1.利用イメージ

今回は、営業の方がお客様への往訪予定登録~往訪報告するケースを対象とします。

  1. アポが入ったら Google カレンダーに登録する(キーワードとしてタイトルに「訪問」を含めて登録する)
  2. 当日になると往訪報告フローが Questetra BPM Suite で自動で開始される
  3. 往訪対応後に報告を入力する

Cal_to_QBPMS

同様の仕組みで、

  • 情報システム部門の方が、システムのメンテナンス作業予定をカレンダーに登録しておいて、予定日になったらシステムメンテナンス向けのフローが自動で開始される
  • マーケティング部門の方が、メールマガジン配信の予定をカレンダーに登録しておいて、準備日になったらメール配信向けのフローが自動で開始される

といったことにも対応できます。

2.実現方法の概要

  1. 毎日、早朝など決まった時刻に起動される Google Apps Script を準備する
  2. その Google Apps Script が起動されると Google カレンダーに登録されている当日のイベントがないかを見に行く
  3. もしイベントがあれば、タイトルにキーワード「訪問」が含まれているかをチェックする
  4. キーワードが含まれていれば、Questetra BPM Suite の対象プロセスモデルを起動するよう http リクエストを送信する

Cal_GAS_QBPMS

3.実現方法の詳細

3.1 Questetra BPM Suite 側の準備

Google Apps Script からデータが送られてきたら起動するプロセスモデルを準備する。
「メッセージ開始イベント(HTTP)」というデータの受け口が必要となる。
BPMN-message-start-event-http
※Google Apps Script との接続部分はリリースをしないと確定されないので注意してください。リリース済で「メッセージ開始イベント(HTTP)」のプロパティの「URL・パラメータ詳細」を開くと以下のような画面が表示されますので、それにあわせて次の Google Apps Script 側の準備を進めてください。
message-start-event-http-property

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 を初めて実行する際にはカレンダーアクセスに対して「承認」が求められますので、承認して進めてください。
gas_execute

また、この Google Apps Script の処理が毎日実行されるようにするには、以下の設定が必要になります。

1. 「リソース」メニューから「現在のプロジェクトのトリガー」を選択
trigger1

2. 「トリガー」追加のため真ん中のリンクをクリック
trigger2

3. 以下のように function を指定して、「時間主導型」・「日タイマー」・実行させたい時刻を選択して、「保存」クリック
trigger3

もし複数のユーザのカレンダーを参照したい場合には、権限のあるアカウントで Google Apps Script を準備し、カレンダーを参照して処理する部分をループさせる必要があります。
複数のユーザのカレンダーを参照するのであれば、Google Spreadsheet 上にデータを持たせて、その Google Spreadsheet に付随する Google Apps Script で準備するのがよいかと思います。

また、Google Apps Script を使えば、Google カレンダーのイベントを参照するだけではなく、逆に Google カレンダーにイベントを登録する、といったことも可能です。
例えば、レビュー依頼をするプロセスで、レビュー終了期限が自動でカレンダーに入るようにするといった形でしょうか。それは別の機会に紹介させていただきます。

ご質問等ございましたら、お問合せフォームから日下(くさか)宛てにご連絡ください。

<関連情報>

「Questetra BPM Suite」は 「Google Apps」との連携機能 を備えており、その詳細についての資料も公開しています。

また、Google Apps Scriptを活用した連携事例 についても資料を公開しています。こちらの資料に今回紹介したケースについても記載をしております。

 

About Kusaka Tsuyoshi

営業をやってますが、もともとエンジニアなので、プログラミングもやります。
View all posts by Kusaka Tsuyoshi

Recommendations
Prev article - 50. Questetra Tips FAQ. Can I Download the Data of Issues?
Next article - 50. Questetra Tips FAQ. Can I Connect from Workflow-A to Workflow-B?
Another article - Kusaka Tsuyoshi 紙のスキャン・「Evernote」から「クラウド型BPM」への連携事例

Archive

 RSS