Garoon REST APIとMicrosoft Flowで手軽にガルキン連携

2018年5月版で公開されたGaroon REST APIと、Microsoft Flowを使って、kitnoneとGaroonの連携を簡単にできないかと考えてみました。

 

そこで、kintoneのアプリにレコードを登録したらGaroonのスケジュールにも同じ内容を登録(転記)できるというフローを作ってみました!

 

気軽にGaroon REST APIのPOSTを試すことができるため、ぜひ参考にしてみてください。

何ができるか

以下のように、kintoneアプリから、Garoonに任意の予定メニューのスケジュールデータ(通常予定)を送ることができます。

 

 

また、このフローを作ることで、Garoon REST APIのPOSTでどんなデータが送られるかを学ぶことができます。

(新しいAPIを使った連携体験がメインのため、あまり実用性は考慮できていなくてスミマセン…)

 

ドメインをまたがった連携も可能ですが、kintoneの作成者のcode(ログイン名)で紐づけており、Garoon側にも同じログイン名が存在する必要があります。

 

Garoon側のスケジュール登録者は、API実行者=(Microsoft FlowのHTTPアクションのヘッダーでログインを指定したアカウント)になります。

Microsoft Flowのkintoneコネクタを使う場合の注意点

大きく1点として、kintoneコネクタは2018年6月現在、プレミアム版での提供のみですので、ご注意ください。試用は可能です。

その他の注意点はこちらの記事をご確認ください。

kintoneコネクタ(Microsoft Flow)を使う前に知っておきたいこと10選

https://developer.cybozu.io/hc/ja/articles/360000361506 

kintoneアプリの作成

kintoneアプリを作ります。以下のフィールドを含めます。

  • 予定メニュー(ドロップダウン) ※Garoon側の予定メニューに同様の設定がない場合、あらかじめ設定しておく必要があります
  • タイトル(文字列(1行))
  • メモ(文字列(複数行))
  • 開始日時(日時)
  • 終了日時(日時)
  • 作成者(自動入力)

Microsoft Flowの設定

kintoneの接続の設定

Microsoft Flowにログインし、

https://japan.flow.microsoft.com/ja-jp/

「マイフロー」「一から作成」をクリックし、トリガーを「kintone」で検索して

「When a record is added to an app」を選択します。

 

初回の場合はkintoneへの接続設定が必要です。

cybozu.comへのログイン画面が出るので、ログインします。

 

kintoneのトリガーの設定

トリガーの設定で、先ほど作成したkintoneのアプリのIDを指定します。

 

アクションの設定(HTTP POST)

アクションは「HTTP」を指定します。ここでGaroon のREST APIをMicrosoft  Flowに叩いてもらうわけです。

以下のように設定します。

  • 方法: POST

  • URI: https://{subdomain}.cybozu.com/g/api/v1/schedule/events

  • ヘッダー: key, value
    X-Cybozu-Authorization,(「ログイン名:パスワード」をBase64でエンコードしたもの)
    Authorization ※Basic認証を使っている場合, Basic (「ログイン名:パスワード」をBase64でエンコードしたもの)
    Content-Type, application/json

  • 本文:

    {

    "eventType": "REGULAR",
    
    "eventMenu": "@{triggerBody()?['record']?['ドロップダウン']?['value']}",
    
    "subject": "@{triggerBody()?['record']?['文字列__1行_']?['value']}",
    
    "notes": "@{triggerBody()?['record']?['文字列__複数行_']?['value']}",
    
    "visibilityType": "PUBLIC",
    
    "start": {
    
      "dateTime": "@{triggerBody()?['record']?['開始日時']?['value']}",
    
      "timeZone": "Asia/Tokyo"
    
    },
    
    "end": {
    
      "dateTime": "@{triggerBody()?['record']?['終了日時']?['value']}",
    
      "timeZone": "Asia/Tokyo"
    
    },
    
    "isAllDay": "false",
    
    "isStartOnly": "false",
    
    "originalStartTimeZone": "Asia/Tokyo",
    
    "originalEndTimeZone": "Asia/Tokyo",
    
    "attendees": [
    
      {
    
        "type": "USER",
    
        "code": "@{triggerBody()?['record']?['作成者']?['value']?['code']}"
    
      }
    
    ]
    

    }

※ 上記本文をこのままコピペしてもうまくいかない場合は、動的なコンテンツの部分(赤い四角の項目)は、下の画像を参考に設定し直してください。

 

設定すると以下の画面のようになります。

 

APIの認証部分の書き方など、詳しい仕様は以下の記事を参照ください。

Garoon REST APIの共通仕様

https://developer.cybozu.io/hc/ja/articles/360000503306

予定の登録(POST)

https://developer.cybozu.io/hc/ja/articles/360000425163

 

最後にフローに任意の名前をつけて、保存します。

フローが「オン」(有効)になっていることを確認してください。

動作確認

kintoneにレコードを追加してみます。

冒頭の画像のように、Garoonのスケジュールに同じタイトルのスケジュールが登録できていれば成功です!

リクエストの値が不正な場合

たとえば、終了日時を開始日時より前に設定した場合など、GaroonのREST APIリクエストの仕方が正しくない場合、

Garoon側からエラーが返り、フローは失敗します。
そのエラー内容は、Microsoft Flow側のフローの実行履歴から確認ができます。

ガルキン連携は工夫次第でより便利なものができそうなので、皆さんもぜひアイディアを絞って共有いただければ幸いです!