##0.はじめに
Teamsのチーム所有者が,Office365一般ユーザーの立場で, Teamsにメンバーを一括登録する方法については,下記の記事で解説されています.
Teamsのメンバーを一括登録する(一般ユーザーで)
Adding bulk users from a .csv or Excel file to a Microsoft Teams team with Power Automate
本記事では, これらの記事に記載されている方法を少し変更したフローについて説明しています.
これらのフローを用いた場合,Excelファイルに記載のアドレスのうち,既にグループに登録済みのメンバーが含まれている場合,その箇所はエラーとなります.最後まで実行され,未登録分はきちんと登録されるので実用上問題はないのですが,登録済みメンバーがいる場合もエラーにならないように変更したので,備忘録として書いておきます.
##1.ExcelファイルをOneDriveかSharePointに保存する
Teamsに登録したいメンバー一覧を記載したTableを含むExcelファイルを用意し,OneDriveかSharePointにアップロードします.この例では,Excelファイルを'excel_to_teams_test'と名前をつけて,OneDriveに保存しています.
Excelでテーブルとして書式設定
を行っておきましょう.
エクセルのテーブル機能の使い方や設定方法
この例では,テーブル名をteam_members_1として保存しています.テーブルに,アドレスを記載した列以外に,ID
という列とStatus
という列も設けておきます.サンプルではName
という列も用意していますが,これは本フローでは特に利用するわけではありません.なお,既に追加済みのメンバーがいる場合には,Status
欄にはadded
と記載しておきます.
##2.Power Automateでフローを作成する
####2.1手動でフローをトリガーします
空白から開始(Create from blank)
でインスタントクラウドフロー
を選択して,フローの作成を始めます.
トリガーとしては,手動でフローをトリガーします(Manually trigger a flow)
を選択します.
####2.2表内に存在する行一覧を表示
次に'アクションを追加'でコネクタのひとつであるExcelを選択します.アクションとしては,表内に存在する行一覧を表示(List rows present in a table)
を選択します.
場所
,ドキュメントライブラリ
,ファイル
,テーブル
は,ステップ1で保存したものをプルダウンメニューから選択します.
さらに,詳細オプションを表示するを選択します.
詳細オプションにFilter Query
という項目があるので,
Status ne 'added'
と記載します.neは'not equal'の略ですね.
こうすることで,Status
列がadded
でない行だけ一覧として取得されます.
Status
列がadded
である行だけ一覧として取得したい場合は
Status eq 'added'
をフィルタークエリの欄に記入すればいいわけです.
Filter Queryの書き方は,
【PowerAutomate】SharePoint フィルタークエリの書き方講座
などが参考になります.
####2.3取得した各行に対して,グループへのメンバー追加,Excelテーブルの行の更新を行う
#####2.3.1コネクタのControlでApply to eachを選択
次に,アクションを追加し,組み込みのコネクタのControl
を選択し,Apply to each
を選びます.'以前の手順から出力を選択'という項目は,動的コンテンツ一覧に表示されるExcelのvalue
を選択します.つまり,ステップ2.2で取得されたStatus
がadded
でない各行に対して,以下のアクションを行う,ということです.
#####2.3.2コネクタのOffice 365 Groupsを用いて'グループへのメンバー追加'を行う
コネクタのOffice 365 Groupsを検索します.検索した際に,Office 365 Groupsは丈夫に表示されず,埋まっているかもしれないので,その場合は,﹀の部分をクリックして,さらにコネクタを表示します.
グループへのメンバー追加(Add member to group)
を選択します.グループIDはメンバーを追加したいTeamsのチーム名をプルダウンメニューから選択します.
User Principal Name(UPN)
の欄はOffice 365のアカウントに利用しているEmailアドレスを記載しますが,ExcelのテーブルではEmailという列に記載していたので,ダイナミックコンテンツのExcel Email
を選択します.
#####2.3.3Excelテーブルの'行の更新'を行う
このユーザーは追加済みであることが分かるように,ExcelのテーブルのStatusの列にadded
を追記します.
アクションを追加でExcelのコネクタを選択し,行の更新(Update a row)
を選択します.テーブルはステップで用意したものです.
キー列
としては,ID
の列を,キー値
は動的コンテンツのExcel ID
を選択します.こうすることで,Apply to each
で作業中の当該行に関するアップデートを行うように設定できます.空欄のままの列に対応したセルは更新されず,Status
だけadded
と加筆されます.
##3.フローを実行する
フローは保存して,テストを行います.'フローのテスト'で'手動'を選択して実行します.ExcelテーブルでStatus
列がadded
でなかったメンバーだけ新たに登録されたことが分かります.また,フローの実行後はExcelテーブルのStatus
列はすべてadded
にアップデートされました.
##4.最後に
既に追加済みのメンバーがいる場合も,エラーを気にしなければ実用上問題がなかったので,わざわざfilter queryというオプションと行の更新アクションを追加する必然性はありません.しかし,たとえば,一斉にメール送信するときなど,Status
としてsent
と記載して,まだsent
でない宛先だけに送る,などといった使い方は便利そうなので,記録用に書いておきました.