(著者:サイボウズ 竹内 能彦)
概要
この記事では、Microsoft Power Automateを使って、kintone のデータからOutlookの予定表にイベントを自動登録するカスタマイズをご紹介します。
kintoneで案件情報を管理しながら、データから直接Outlookに商談の予定などを登録できるので、とても便利なカスタマイズです。
1. はじめに
最近 kintone と Office 365 は連携できないの?とよく聞かれます。
両サービスとも API があるので連携はできます。が、開発が必要になり、なかなかのハードルです。
そこで、今回は Microsoft Power Automate を使って、 kintone に登録したスケジュール情報を Office 365 Outook の予定表に登録します。
Microsoft Power Automate に2018年1月に追加された kintoneコネクタを利用するのでプログラムを書かずに連携できます。
kintoneコネクタの詳しい機能は、下記注意点にてご確認いただけます。
今後のバージョンアップにご期待ください。
2. 注意点
- kintoneコネクタの注意点
- こちらの記事(kintoneコネクタ(Microsoft Power Automate)を使う前に知っておきたいこと10選 )をご確認ください。
- ログイン名(kintone, Office 365)の注意点
- 本記事をそのまま利用する場合、両サービスのログイン名が一致もしくは部分一致する環境を前提としています。
例)kintone のログイン名が「XXXX」、Office 365 のログイン名が「XXXX@cybozu.co.jp」
- 本記事をそのまま利用する場合、両サービスのログイン名が一致もしくは部分一致する環境を前提としています。
3. 結果
いつもの通りまずは結果からお伝えします。
動作は簡単で、kintone アプリにレコードを追加すると、Outlook に予定が登録されます。
今回は予定の開始日時、終了日時、タイトル、内容、連絡先を連携しました。
4. kintone の設定
アプリの準備
フィールドの設定(今回のカスタマイズで必要なフィールドのみを抜粋)
フィールド名 | フィールドタイプ | フィールドコード |
開始日時 | 日時 | start_datetime |
終了日時 | 日時 | end_datetime |
件名 | 文字列(1行) | subject |
本文 | 文字列(複数行) | body |
参加者 | ユーザー選択 | attendee |
作成したアプリIDは Microsoft Power Automate の設定で利用するのでメモしましょう。
アプリIDはURLから確認できます。先ほど作成したアプリを開きます。
そのURLが「https://{subdomain}.cybozu.com/k/939/」の場合、「939」がアプリIDになります。
5. Microsoft Power Automate の設定
kintoneコネクタの設定
Office 365 にログインし、Power Automate アプリを選択します。
こんな画面が表示されていればOKです。
ではフローを作っていきましょう。慣れれば簡単です!
まずはメニューから「コネクタ」を選択します。「kintone」で検索し、kintone コネクタをクリックします。
画面下の「レコードがアプリに追加されたとき」をクリックします。
kintone のドメイン名を入力し、サインインをクリックします。
cybozu.com のログイン画面が表示されるのでログイン名とパスワードを入力し、ログインをクリックします。
このとき、下記エラーが表示された場合はcybozu.comヘルプの手順を参考に外部サービス連携から Microsoft Power Automate を有効にしてください。
(cybozu.com共通管理のシステム管理者権限が必要です)
外部サービス連携が許可されている場合は下記画面が表示されます。許可をクリックします。
App IDには先ほどメモしたアプリIDを入力します。
次に「新しいステップ」をクリックします。
ログイン名の整形
kintone のユーザー情報は配列で保持し、配列配下にcodeプロパティ(ログイン名)とnameプロパティ(表示名)を持っています。
今回のサンプルでは kintone のログイン名が「XXXX」、Office 365 のログイン名が「XXXX@cybozu.co.jp」という環境で試しました。
そのため、ユーザー情報のcodeプロパティのみを取得するために本処理が必要になります。
また、kintone のログイン名を Office 365 のログイン名に合わせるために、kintone のログイン名「XXXX」に「@cybozu.co.jp」を追加する処理を実装します。
※ログイン名が全く異なる場合は、条件分岐する、ログイン名を紐づけるデータベースを別途用意する、などの対応が必要になります。
「変数」で検索し、アクション「変数を初期化する」を追加します。
名前は「mailaddress」と入力、種類は「アレイ」を選択します。
次は「Apply to Each」で検索し、「組み込み」タブにある「Apply to Each」を追加します。
繰り返しの対象には「参加者」を選択します。
Apply to Eachの中にアクション「配列変数に追加」を追加します。
配列変数の名前は「mailaddress」を選択し、値には「concat(item().code, '@cybozu.co.jp')」と入力します。
ログイン名が共通の場合は、値に「item().code」と入力します。
Outlook に予定を登録
アクション「Office 365 Outlook - イベントの作成(V4)」を追加し、下記の通り設定します。
必須出席者には「join(variables('mailaddress'), ';')」と入力します。
フローの全体構成
これで完成です。フローの全体構成はこのようになっているはずです。
6. 動作確認
設定出来たら、フローを保存して、kintone にデータ追加してみましょう。
Outlook に予定が登録されたら成功です。
登録されない場合は以下の3か所でエラーが発生していないか確認してください。
- Microsoft Power Automate の実行履歴
- kintone アプリのWebhookログ(アプリの設定 > Webhook > Webhookログ)
- cybozu.com共通管理の監査ログ
cybozu.com共通管理で「error type: SERVER_ERROR, status code: 404」が出力される場合は kintone アプリのWebhook設定と Microsoft Power Automate の kintone接続が合っていない可能性があります。
kintone アプリのWebhook設定を削除して、Microsoft Power Automate の kintone 接続を再設定してください。
7. 終わりに
ノンコーディングでデータベースを作れる kintone、ノンコーディングで各種サービスを繋げる Microsoft Power Automate、凄く相性が良いと思いませんか?
kintoneコネクタの機能追加が待ち遠しいです。
このTipsは、2020年5月版 kintoneで確認したものになります。
お世話になります。
トリガーは「アプリのレコード追加」のみとのことですが、
Outlook に予定を追加⇒kintone アプリにレコード登録
は可能でしょうか。
>>Microsoft Flow 設定時の注意点(2018年2月時点の情報)
>>Internet Explorer や Microsoft Edge を利用してください。
Firefox環境下では未検証でしょうか。
よろしくお願い致します。
maeta-k 様
ご質問1について:
注意点に『アクションは「レコード追加」、「レコード更新」』に記載のとおり、
Outlookのコネクタで使えるトリガーに「Outlookに予定を追加」相当の機能が存在すれば、
アクション 「kintoneアプリにレコード追加」は既に存在しますので、可能です。
確認したところ、「新しいイベントが作成されたとき (V2)」というトリガーがありましたので、利用できそうです。
このTipsのシナリオと異なりますので、実際の開発の際のご質問はコミュニティに投稿ください。
ご質問2について
申し訳ありません。Firefox環境では未検証です。
ただし、Flow設定時のみのブラウザになります。
Flowの設定後は、動作にブラウザは関係ありません。
お世話になります。
kintoneコネクタ と「Outlookイベントの更新(V4)」について、教えてください。
「kintoneアプリレコードが更新された時」をトリガーとして、「Outlookイベントの更新(V4)」を設定したいのですが、設定項目の中で、ID に設定すべき内容が分かりません。
「kintoneアプリレコードが追加された時」の「Outlookイベントの作成(V4)」は正しく処理されるように設定できています。
このアプリ更新がうまく使えたら、非常に有用な機能になります。
お手数お掛けしますが、ご教示よろしくお願い致します。
米沢 明洋 様
こちらのTipsのシナリオはOutlookイベントの作成についてのみであり、Outlookイベントの更新には対応しておりません。
ご質問のIDは更新したいOutlookのイベントIDを指定するものになりますが、こちらのシナリオではkintone側でイベントIDを持っていないため、Power Automate で指定はできないものと思われます。
ご参考までに、Power Automate を使わずJavaScriptカスタマイズでイベント更新を実現する方法は以下の記事にございます。
Outlook連携 - kintoneからOutlookスケジュールを登録しよう!!https://developer.cybozu.io/hc/ja/articles/360022249111
※冒頭記載のとおりセキュアコーディングに抵触する内容があることをご含みおきください
こちらは記事のシナリオ通りに操作したが不具合があった場合等のためのフィードバックの場となります。
個別の技術的な質問は cybozu developer コミュニティのご利用をお願いします。
ご回答ありがとうございました。
イベントの更新は、対応していない旨、承知いたしました。
JaveScriptも検討してみます。
米沢 明洋 様
ご参考までに、kintone アプリにOutlookのイベントID用のフィールドを追加し、
Outlookイベント作成時にできた戻り値(イベントID)を、kintoneのフィールドに格納しておけば更新にも対応が可能です。
フロー作成時の追加手順概要は次のとおりです。
・kintone アプリに、Outlook からの戻り値を格納するための文字列フィールドを用意
・「kintoneアプリレコードが追加された時」のフローに、kintoneのレコード更新アクションを追加、
更新アクションで、作成した文字列フィールドに Outlook の ID を格納
・新しくkintone レコード更新時のフローを作成、
Outlook のイベント更新アクションで、Outlook の IDに、作成した文字列フィールドを格納
こちらの手順につきまして、やってみてうまくいかないなどございましたら、
cybozu developer コミュニティのご利用をお願いします。
情報ありがとうございます!
ご教示いただいた内容を元に試してみます。
Outlookイベントの更新(V4) できました!
ありがとうございます。
イベントID を PowerAutomate から kintone へ書き戻すことができるのはすごいですね。
具体的に業務で使うため、もう少し研究したいと思います。
お世話になっております。
この記事通りに設定したところ、kintoneで登録したスケジュールがOutlookに連携されるようになったのですが、他の人が登録したスケジュールまでOutlookに連携されるようになってしまいました。
もちろん、小職が会議の参加者に指定されているわけではありません。
設定の中で、気を付ける点があれば、ご教示いただけますと幸いです。
平山 智之 様
お世話になっております。cybozu developer network 事務局です。
本記事で使用している PowerAutomate の kintone コネクタは、
「アプリにレコードが追加されたとき」をトリガーにしており、
設定した kintone アプリにおいてレコードが追加されたときに実行されます。
そのため、PowerAutomate と連携したアプリにレコードを追加できる権限を持っているユーザーが
レコードを新しく追加したときに Outlook に予定が追加されます。
ご自身のみに本記事の連携を適用したい場合などは、記事から発展した内容になるため、
個別の技術的な質問は cybozu developer コミュニティのご利用をお願いいたします。