kintone 2 Advent Calendar の 23 日目の記事です🎄
はじめに
こんにちは。
去年は眺めていただけだった kintone Advent Calendar ですが、今年は思い切って登録してみました!
ちょっと前に書いた記事に引き続き、Microsoft Teams との連携記事です。
今回は kintone から Microsoft Teams のチームを作成してみようと思います。
利用イメージ
たとえば、新しいプロジェクトが始まったときや、Cybozu Days に向けた作業用の一時的なチームを作成したいとき。
ゼロからチームやチャネルを作成して、何十人ものメンバーを招待して......というのは思ったよりも手間のかかる作業です。
そこで、kintone でプロセス管理を回してチームを作成できるようにしてみました。
ある程度の雛形を用意しておき、レコードの再利用などを活用すると、同じ構成のチームをすぐ簡単に作成することができるようになります。
準備するもの
- kintone のアプリ
- Microsoft Teams
- Microsoft Power Automate
kintone の設定
フィールドの設定
最初は kintone のアプリを作ります。
「チャネル名」と「チャネルの説明」はそれぞれ「channels」というテーブルに、「メンバー」と「所有者」はそれぞれ「members」 というテーブルに配置します。
フィールド名 | フィールドコード | フィールドの種類 | 必須 |
---|---|---|---|
チーム名 | teamName | 文字列(1行)フィールド | 必須 |
公開設定 | visibility | ラジオボタン | 必須 |
チーム ID | teamID | 文字列(1行)フィールド | - |
説明 | teamDescription | 文字列(複数行)フィールド | - |
チャネル名 | chanelName | 文字列(1行)フィールド | 必須 |
チャネルの説明 | channelDescription | 文字列(複数行)フィールド | - |
メールアドレス | emailAddress | リンクフィールド | 必須 |
所有者 | owner | ラジオボタン | 必須 |
実際のレコードの入力イメージはこんな感じです。
プロセス管理の設定
今回はトリガーにプロセス管理を使用するので、簡単にプロセスを設定します。
Microsoft Power Automate の設定
Microsoft Power Automate を設定していきます。全体の流れは以下の通りです。
kintone のトリガーを設定する
今回のカスタマイズでは、プロセス管理のアクションが実行されたときをトリガーにします。
フローの作成時に「プロセス管理の状態が更新されたとき」を選択し、アプリ ID を指定します。
初回は認証画面が表示されるので、kintone のユーザー名とパスワードを入力します。
外部サービスとの接続設定は kintone ヘルプの「 外部サービスとの連携を許可する 」を参考にしてください。
チームの作成
最初は「チームの作成」アクションを追加します。
パラメータは簡単です。アプリの「チーム名」フィールドと「説明」フィールドの情報をそのまま指定します。
ここで「詳細オプションを表示する」から「可視性」の設定も行いましょう。
「カスタム値を入力」から「公開設定」フィールドを選択します。
メンバーとチャネルの追加
メンバーの追加(addMember)
ここでは、サブテーブルに設定したメンバーの情報を順番に登録していきます。
「Apply to each」のアクションを選択し、名前を「addMember」に変更します。
そして、「以前の手順から出力を選択」の「式」に以下のように値を設定します。
triggerOutputs()?['body/record/members/value']
続いて、「チームにメンバーを追加する」のアクション追加します。
「チーム」には「動的なコンテンツ」から「新しいチーム ID」を指定します。
「チームに追加するユーザの ADD ID」には、ユーザーが M365 で使用しているメールアドレスを指定したいので、「式」に以下のように入力します。
items('addMember').value.emailAddress.value
「新しく追加されたユーザーがチームの所有者である必要があります$\tiny{(どういう項目名やねん)}$」 には、真偽値で管理者かどうかを設定します。「カスタム値を入力」から「式」を開いて次のように指定します。
items('addMember').value.owner.value
ちょっとゴチャゴチャしてきたので JavaScript のコードに置き換えて考えてみましょう。
「以前の手順から出力を選択」で設定した部分は、forEach 文を実行する対象の配列にあたります。
body は event に置き換えるとわかりやすいと思います。
var addMember = event.record.members.value;
addMember.forEach(function(items) {
var emailAddress = items.value.emailAddress.value; // 「チームに追加するユーザの ADD ID」に指定した値
var owner = items.value.owner.value; // 「新しく追加されたユーザーがチームの所有者である必要があります」に指定した値
console.log(emailAddress); // xxxx@email.com
console.log(owner); // true または false
});
チャネルの追加(createChannel)
チームにメンバーを追加するのと同時に、チャネルも作成しましょう。
「並行分岐を追加」を選択し、「Apply to each」のアクションを追加します。
名前は「createChannel」に変更します。
「以前の手順から出力を選択」には先ほどと同時の手順で以下の値を設定してください。
triggerOutputs()?['body/record/channels/value']
「チャンネルを作成します」のアクションを選択して、以下のように設定しましょう。
「表示名」には、以下の式を設定します。
items('createChannel').value.channelName.value
「説明」には、以下の式を設定します。
items('createChannel').value.channelDescription.value
kintone アプリのレコードの更新
このアクションはなくても良いのですが、何かしらの情報が返ってきた方が kintone もうれしいのではないかと思い設定しました。
「アプリ内のレコードを更新」のアクションで以下のように設定を行います。
(後述しますが、このチーム ID を利用すればチームのアーカイブなども kintone から行えるようになります)
動作確認
プロセス管理を進めると、kintone のレコードに指定した値でチームを作成することができます。
チーム名やチームの説明、そしてユーザーごとの役割もしっかり反映されています!
さいごに
ほんとはかっこよく Microsoft Graph API を使って実装したかったのですが、思ったより手こずってしまって Microsoft Power Automate の力を借りることにしました。
簡単な連携ならローコードであっという間に作成できるのでオススメです。
Microsoft Power Automate では指定できるパラメータが限られていますが、Teams の API を使用すれば、以下のような複雑な処理も実装できると思います。
- チームの情報を更新する
- チームにあらかじめインストールするアプリを指定する
- 作業が終わったあとにチームをアーカイブする
いろんな製品と kintone をつなげることで、まだまだ作業の効率化とチームワークを高めることができそうですね。来年も機会があれば記事を書いていきたいと思います。
みなさま良いクリスマスをお過ごしください🤱