🔨

1万人超えのTeamsにメンバーを追加する

2024/02/16に公開

MicrosoftのTeamsで、既存のTeamにPowerAutomateを使用して定期的にメンバー追加するというだけの記事です。社内の環境制約などもありこのような形にしていますが一般的にはもっと他の方法がある可能性がありますので予めご了承ください。

はじめに

私自身の仕事の一つとして、社内で使用しているTeamsのとあるTeamの維持管理を行っています。そのTeamは基本的にある組織の人が全員所属すべしというような運用をしており、定期的にメンテナンス(組織のメンバーを追加)する必要がありました。

とはいえ、組織の人が登録されているメーリングリスト(配布グループやセキュリティグループ、以下MLと記載)が別にありましたので、月1回くらいの頻度でそのMLを使用してTeamにメンバー登録するだけの作業でした

途中までは。

ある時を境に、登録を行ってもTeamsが反応しなくなりました。原因ですが、ML内の人数が多くなりすぎたためと推測されました(MLおよびTeamsともに1万人を超えていました)。そのため分割が必要となったのですが、元々使用していたMLは、MLがネストする構造になっており第2階層として10数個のMLに分かれていましたので、それらを使用することで問題なく登録が行えました

途中までは。

やがて第2階層のMLでも同様にTeamsが反応しなくなりました。第3階層のMLもあったのですが、この時点で100 ML(10×10)を超えたので、自動化に舵を切りました。

作成にあたっての考慮点など

  • 自動化は社内で利用できるPowerAutomateを利用する
  • PowerAutomateでTeamsにメンバー追加する場合は個人にばらして、一人ずつ登録が必要
  • ML内は個人またはMLで構成されているため、MLの場合は再帰的に処理が必要
  • データをどこに置くか検討が必要(あまり自由に各種コネクタを利用できないので、DB的な利用が可能なものを探す必要がある)

ver1.0

とりあえず作成してみた版です。大きく2つのフロー、「あるMLを個人にばらすフロー」と「個人をTeamsに登録するフロー」に分けることとしました。
MLを再帰的に処理するために、あるML内の対象データが個人の場合とMLの場合で振り分けそれぞれ別に保管するようにしています。MLの場合は一時保管しておき、ループ内で再度処理するようにしています。
データはSharePointに格納しているExcelを利用することとしました。

ver2.0 一秒の間違い

ver1.0でも稼働自体は問題なかったのですが、一つ大きな問題があることが分かりました。具体的には処理時間で、「個人をTeamsに登録するフロー」の処理時間が数時間かかることが分かりました(一人1秒だとしても1万人分を回すと約2.8時間になる)。
そこで既存メンバー情報を取得し、未登録のメンバーだけをTeamsに登録することにしました。これにより「あるMLを個人にばらすフロー」の処理時間が10分程度増えますが、全体では時間を短縮することができました。

ver3.0 そしてSharePointへ…

ver2.0で完成したと思ったのですが、処理中に時々エラーが発生することが分かりました。具体的にはExcelとの接続部分で、データの読み込みや書き出し部分で時々エラーとなっていました。ただ、処理でこのエラーをどうこうすることは難しそうでしたので、SharePointのリストを使用することにしました。SharePointのリストにしてからは同様のエラーは発生しておらず、また副産物として処理時間がExcelの頃よりも早くなりました。

まとめ・その後

今回の作成を通じてデータを保管して処理を行うという処理の基本形を作れました。別の処理でも活用したいと思います。データ保管先としてExcelよりSharePointリストのほうがよいというのもよい気づきでした。

本処理のその後ですが、並行稼働できるように初期ML取得方法に手を加えたりしました。現在も問題なく稼働しています。

Accenture Japan (有志)

Discussion