LoginSignup
14
2

More than 1 year has passed since last update.

kintone で Microsoft Teams のチームを管理してみた

Last updated at Posted at 2020-12-23

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 ラジオボタン 必須

実際のレコードの入力イメージはこんな感じです。

kintone_record.png

プロセス管理の設定

今回はトリガーにプロセス管理を使用するので、簡単にプロセスを設定します。

kintone_process.png

Microsoft Power Automate の設定

Microsoft Power Automate を設定していきます。全体の流れは以下の通りです。

overall.png

kintone のトリガーを設定する

今回のカスタマイズでは、プロセス管理のアクションが実行されたときをトリガーにします。
フローの作成時に「プロセス管理の状態が更新されたとき」を選択し、アプリ ID を指定します。

kintone_process_action.png

初回は認証画面が表示されるので、kintone のユーザー名とパスワードを入力します。
外部サービスとの接続設定は kintone ヘルプの「 外部サービスとの連携を許可する 」を参考にしてください。

チームの作成

最初は「チームの作成」アクションを追加します。
パラメータは簡単です。アプリの「チーム名」フィールドと「説明」フィールドの情報をそのまま指定します。

create_team_01.png

ここで「詳細オプションを表示する」から「可視性」の設定も行いましょう。
「カスタム値を入力」から「公開設定」フィールドを選択します。

create_team_02.png

メンバーとチャネルの追加

メンバーの追加(addMember)

ここでは、サブテーブルに設定したメンバーの情報を順番に登録していきます。
「Apply to each」のアクションを選択し、名前を「addMember」に変更します。
そして、「以前の手順から出力を選択」の「式」に以下のように値を設定します。

triggerOutputs()?['body/record/members/value']

addMember_01.png

続いて、「チームにメンバーを追加する」のアクション追加します。
「チーム」には「動的なコンテンツ」から「新しいチーム ID」を指定します。
「チームに追加するユーザの ADD ID」には、ユーザーが M365 で使用しているメールアドレスを指定したいので、「式」に以下のように入力します。

items('addMember').value.emailAddress.value

addMember_02.png

「新しく追加されたユーザーがチームの所有者である必要があります$\tiny{(どういう項目名やねん)}$」 には、真偽値で管理者かどうかを設定します。「カスタム値を入力」から「式」を開いて次のように指定します。

items('addMember').value.owner.value

addMember_03.png

ちょっとゴチャゴチャしてきたので 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」に変更します。

add_parallel_action.png

「以前の手順から出力を選択」には先ほどと同時の手順で以下の値を設定してください。

triggerOutputs()?['body/record/channels/value']

create_channel_00.png

「チャンネルを作成します」のアクションを選択して、以下のように設定しましょう。

create_channel_01.png

「表示名」には、以下の式を設定します。

items('createChannel').value.channelName.value

「説明」には、以下の式を設定します。

items('createChannel').value.channelDescription.value

kintone アプリのレコードの更新

このアクションはなくても良いのですが、何かしらの情報が返ってきた方が kintone もうれしいのではないかと思い設定しました。
「アプリ内のレコードを更新」のアクションで以下のように設定を行います。
(後述しますが、このチーム ID を利用すればチームのアーカイブなども kintone から行えるようになります)

put_record.png

動作確認

プロセス管理を進めると、kintone のレコードに指定した値でチームを作成することができます。
チーム名やチームの説明、そしてユーザーごとの役割もしっかり反映されています!
result_team.jpeg

チャネル名や説明文もばっちり反映されていますね。
result_channel.png

さいごに

ほんとはかっこよく Microsoft Graph API を使って実装したかったのですが、思ったより手こずってしまって Microsoft Power Automate の力を借りることにしました。
簡単な連携ならローコードであっという間に作成できるのでオススメです。

Microsoft Power Automate では指定できるパラメータが限られていますが、Teams の API を使用すれば、以下のような複雑な処理も実装できると思います。

  • チームの情報を更新する
  • チームにあらかじめインストールするアプリを指定する
  • 作業が終わったあとにチームをアーカイブする

いろんな製品と kintone をつなげることで、まだまだ作業の効率化とチームワークを高めることができそうですね。来年も機会があれば記事を書いていきたいと思います。

みなさま良いクリスマスをお過ごしください🤱

14
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
2