くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

【Exchange】会議室を予約できるメンバーを制限する

はじめに

Outlook 予定表で予定登録する時、ユーザーは会議室の予約を行うことができます。
デフォルトでは、全ての会議室を誰でも予定に追加することが可能ですが、役員専用の会議室のように一般社員の利用が望ましくない会議室は特定のメンバーのみ予約できるようにしたいと考えることもあると思います。

そんなときは、会議室メールボックスの設定を変更し「会議室を予約できるメンバーを限定」してしまいましょう。
今回はその方法をご紹介します。

目次

事前確認

会議室メールボックスの設定変更を行う前に下記の準備が必要です。
・EXO V2 モジュールがインストールされている事。
・EXO のアクセス許可(Exchange管理者や全体管理者など)を持っている事。
PowerShell で EXO に接続できる事。

会議室を予約できるメンバーを制限する

PowerShell で ExchangeOnline に接続後、下記コマンドを実行します。

Set-CalendarProcessing -Identity "<設定変更する会議室のメールアドレス>" -AutomateProcessing AutoAccept -BookInPolicy "<予約を許可するメールアドレス>" -AllBookInPolicy $false

-Identity で、設定変更する会議室のメールアドレスを指定します。
-AutomateProcessing AutoAccept で「予約が入った場合は自動承認を行う」ようにします。
反対に、自動承認を無効にする場合は None を指定します。
-BookInPolicy で、会議室の予約が可能なユーザー or グループ or 共有メールボックス を指定します。指定対象が複数いる場合はカンマ区切りで指定してください。
-AllBookInPokucy で、BookInPolicy で指定していないユーザーが会議室を予約した場合の挙動を設定します。
今回、指定外のユーザーは会議室を予約できないようにしたいので $false を設定します。

例:User1とGroup1のみ SampleMeetingRoom の予約が可能。他は予約不可

Set-CalendarProcessing -Identity "SampleMeetingRoom@contoso.co.jp" -AutomateProcessing AutoAccept -BookInPolicy "User1@contoso.co.jp","Group1@contoso.co.jp" -AllBookInPolicy $false

注意事項

注意 その1:
BookInPolicyで予約可能な対象は、ユーザー or メールが有効なセキュリティグループ or 共有メールボックス です。
Microsoft365 グループなどは予約可能な対象にできません。


注意 その2:
BookInPolicyに共有メールボックスを登録した場合、共有メールボックスで会議室を予約する際は会議室の予約が可能ですが、共有メールボックスに所属するメンバー個人が会議室を予約した場合は却下されます。


注意 その3:
BookInPolicyで予約可能なユーザー or グループが複数の場合はカンマ区切りで全て指定してください。
Set-CalendarProcessing で変更した箇所は、上書き保存による変更のため、既存の設定値は消えてしまいます。

Set-CalendarProcessing -Identity "SampleMeetingRoom@contoso.co.jp" -AutomateProcessing AutoAccept -BookInPolicy "User1@contoso.co.jp","User2@contoso.co.jp","Group1@contoso.co.jp" -AllBookInPolicy $false


注意 その4:
設定変更した会議室は以後、予定の登録直後に会議室が自動的に予定を辞退して「キャンセル扱い」となるため、「結果的に会議室を予約できないようにする」という動きとなります。
この時、「会議室を利用しない会議の予約」は予定表の登録されたままとなります。

f:id:kurakurattyo:20220126170256p:plain

結果確認

下記コマンドを実行して設定変更されていることを確認します。

Get-CalendarProcessing -Identity <設定変更した会議室のメールアドレス> | fl

設定を解除する場合

設定した制限を解除する場合は下記コマンドを実行します。

Set-CalendarProcessing -Identity <設定変更した会議室 のメールアドレス> -BookInPolicy $null -AllBookInPolicy $True

参考URL

Set-CalendarProcessing | Docs

【Exchange】会議室を使いやすくするために定員、階数、機能を登録しよう

はじめに

Outlook 予定表で会議室を予約する際に利用する「会議室の検索」機能には、会議室を絞り込むためのフィルター項目として「建物」「定員」「階数」「機能」が用意されています。

「建物」は、下記リンク先で説明している「会議室リスト」でフィルターします。

【Exchange】会議室リストを作って会議室メールボックスを管理する - くらっちのクラウド日記

そのほか「定員」「階数」「機能」を会議室メールボックスに登録することで、より詳細に会議室を検索できるようになります。

f:id:kurakurattyo:20220126144346p:plain

今回は、PowerShell で会議室メールボックスに「定員」「階数」「機能」を登録する方法を紹介します。

管理センターから項目を登録する

「定員」「機能」は、Microsoft365管理センターやExchange管理センターで登録することが可能です。
変更する対象が少ないのであれば、管理センターから実施した方が簡単です。
ただし「階数」は管理センターから登録することができないため、PowerShell を用いる必要があります。

Exchange管理センター > 受信者 > リソース > 会議室を選択
・「定員」を修正する場合
  鉛筆マーク を選択 > 定員 を修正する

・「機能」を修正する場合
  追加情報 を選択 > タグ にカンマ区切りで修正する

PowerShell で「定員」を登録する

PowerShell で会議室メールボックスに「定員」を登録する際は、下記コマンドを実行します。

構文:Set-Mailbox -Identity "<会議室メールボックス>" -ResourceCapacity <定員数>
 例:Set-Mailbox -Identity "sample_meetingroom@contoso.co.jp"-ResourceCapacity 12

PowerShell で「階数」を登録する

PowerShell で会議室メールボックスに「階層」を登録する際は、下記コマンドを実行します。

構文:Set-Place -Identity "<会議室メールボックス>" -floor <階数>
 例:Set-Place -Identity "sample_meetingroom@contoso.co.jp" -floor 10

PowerShell で「機能」を登録する

PowerShell で会議室メールボックスに「機能」を登録する際は、下記コマンドを実行します。
複数の機能を登録する場合は、カンマ区切りで登録してください。
上書き保存されるため、登録時は必要な分すべて登録してください。

構文:Set-Place -Identity "<会議室メールボックス>" -Tag "<機能1>","<機能2>"
 例:Set-Place -Identity "sample_meetingroom@contoso.co.jp" -Tag "スピーカー","iPad"

注意事項

PowerShell で各項目を修正する際に注意すべき点があります。

Set-Place を利用して1行のコマンドで、都市(City)と機能(Tag)を同時に編集しようとするとエラーが発生して処理が失敗します。
1つの会議室に都市と機能を登録する場合は、都市修正のコマンドと機能修正のコマンドを別々に用意して登録を行う等の対処が必要です。

ただし、階数(floor)と機能(Tag)は1行のコマンドで同時に編集することが可能です。

参考URL

【Exchange】会議室リストを作って会議室メールボックスを管理する | くらっちのクラウド日記
Set-Place | Docs
Set-User | Docs

【Exchange】会議室リストを作って会議室メールボックスを管理する

はじめに

皆さんの会社では、会議室メールボックスは利用していますか?
会議室メールボックスを利用することで、Outlook の予定表にスケジュール登録する際に利用する会議室を予約することができます。
設定次第で、同じ時間帯に他ユーザーが会議室を既に予約済みの場合は重複する予約を自動的にキャンセルさせたり、特定グループだけが利用できる会議室を作成することも可能です。

今回は、会議室をグループ化するための会議室リストの作成方法をまとめました。

目次

会議室リストについて

組織に会議室が複数存在する場合は、ビルごと・階ごとのようにグループ分けして会議室を整理・管理することができます。
会議室をグループ分けするためのグループが会議室リストです。

会議室リストの特徴は以下の通り。
・会議室リストのメンバーとして、会議室を登録する。
・会議室リストは 配布グループ を使用します。
・会議室リストに追加できる会議室の数に明確な制限はないが、一度に表示できる会議室の最大数は 100 です。
Outlook クライアント、Outlook on the web、Teams 予定表で利用が可能。
・会議室リストは、Exchange 管理シェルを使用してのみ作成と閲覧が可能。
・会議室リストは、管理センターに表示されません。

会議室リストの作成

事前準備

会議室リストを作成する前に下記の準備が必要です。
・EXO V2 モジュールがインストールされている事。
・EXO のアクセス許可(Exchange管理者や全体管理者など)を持っている事。
PowerShell で EXO に接続できる事。

モジュールのインストールと、EXO への PowerShell 接続方法は下記リンク先をご覧ください。
「基本認証」の方は、セキュリティ上の問題により今後廃止される予定らしいので、「MFA または 先進認証」による認証がうまくいかない場合に利用してください。

Exchange Online PowerShell に接続する :MFA または 先進認証 - Docs
Exchange Online PowerShell に接続する :基本認証 - Docs

会議室リストを作成する

最初に PowerShell で ExchangeOnline に接続します。

1-1.会議室リストを作成する

会議室リスト用の配布グループを新規作成する方法です。
下記の場合、PowerShell で認証を行ったユーザーが作成したグループの所有者になります。

New-DistributionGroup -Name "豊洲ビル" -RoomList -PrimarySmtpAddress "ToyosuBL@KuraCompany.com"
New-DistributionGroup -Name "池袋ビル" -RoomList -PrimarySmtpAddress "IkebukuroBL@KuraCompany.com"

-Name は、会議室リストの名前です。最大文字数は 64 文字で大小文字・全角半角すべて1文字として数えます。
-RoomList は、会議室リストであることを示しています。
-PrimarySmtpAddress は、会議室リストのメールアドレスを入力します。

※ 上記、-PrimarySmtpAddressが未入力 & -Name が日本語だった場合、PrimarySmtpAddress などが「????@ドメイン」の形で作成されるためご注意ください。

1-2.既存の配布グループを会議室リストに変換する場合

既存の配布グループを会議室リストにする場合は、下記コマンドを利用します。

Set-DistributionGroup -Identity "池袋ビル" -RoomList

-Roomlist を指定することで、会議室リストに変換できます。

2.会議室リストの確認

下記コマンドで、会議室リストが作成されている事を確認します。

Get-distributionGroup "池袋ビル" | select Name,DisplayName,GroupType,PrimarySmtpAddress

3.会議室リストに会議室を追加する

会議室リストが作成できたら、会議室メールボックスを追加していきます。

#豊洲ビルに、10階会議室A、10階会議室B、10階会議室Cを追加する。
  Add-DistributionGroupMember -Identity "豊洲ビル" -Member "ConfRoom10A@KuraContoso.com"
  Add-DistributionGroupMember -Identity "豊洲ビル" -Member "ConfRoom10B@KuraContoso.com"
  Add-DistributionGroupMember -Identity "豊洲ビル" -Member "ConfRoom10C@KuraContoso.com"
#豊洲ビルに、特別会議室 を追加する。
  Add-DistributionGroupMember -Identity "豊洲ビル" -Member "SpecialConfRoom@KuraContoso.com"

-Identity は、会議室リストを指定します。
-Member で、会議室リストに追加する会議室メールボックスを指定します。

会議室リストを利用する

登録が完了したら、会議室リストの表示を確認しましょう。
会議室リストを利用する方法は2つあります。

「建物」項目にキーワードを入力する

Outlook の予定表で会議登録を行う際に会議室を検索して予約することができます。
 会議室の検索を使用して参照する > 会議室の検索
で会議室リストを選択・参照できます。

会議室リストは自動で「会議室の検索」画面に表示される動作ではありません。
「建物」欄にキーワードを入力することで選択できるようになります。
会議室リストを選択すると、会議室リストのメンバーの会議室が候補一覧に表示され会議室が選択できます。

キーワード入力せずに会議室リストから会議室を選択する方法

キーワード入力せずに会議室リストから会議室を選択させたい場合、ひと手間必要になります。
会議室メールボックスにある「市区町村」というプロパティを利用するのです。

会議室メールボックスの「市区町村」に値が設定されている場合、「会議室の検索」>「すべての都市」配下に、会議室メールボックスに設定された「市区町村」を一覧表示できます。

都市名をクリックすると、選択した都市名を「市区町村」に持つ会議室ではなく、その会議室を含む会議室リストが候補一覧に表示されるため、結果的にキーワード入力しなくても会議室リストから会議室が選択できるようになります。

ちなみに、それぞれの会議室リストにおいて1つ以上の会議室に「市区町村」が設定されていれば、会議室リストは表示されます。
※上図の豊洲ビルでは「10階会議室A」にしか「市区町村」を入力していません

設定から反映までは最大24時間程度かかるため、動作確認する際はご注意ください。

Teams で会議室リストを利用する

Teamsで会議室リストを利用する場合は、Outlookと若干操作が異なります。
Teamsの場合は詳細画面の「場所を追加」をクリックすると会議室リストが表示されます。
「場所を追加」に会議室リスト名を入力することで、会議室の絞り込みもできます。

参考URL

会議室メールボックスを作成および管理する - Docs

【PowerAutomate】承認フローに期限を設けて、タイムアウト処理も実施する!!

・はじめに

Power Automateを利用して承認フローを作成したいんだよなー。
でも、申請者が承認依頼しても承認者の応答がない場合はどうしたらいいんだろう?

そんな時は、承認待ちが長く続くことを避けるために、承認待ちのアクションには期限を設けましょう。
※この記事は、Qiita から情報を最新化して移行しています。

・目次

・目的

承認フローで承認待ちが発生した場合、待ち時間の上限を設ける。
待ち時間の上限に達した場合の処理を設定する。

・実装方法

下図は承認フローの一例です。
この記事では、下記例を使って解説を行っていきます。
・トリガーが実行されたら指定した承認者に承認依頼を出し、応答を待ちます。
・承認/却下の応答があれば、結果に応じた処理を実施する。
・応答がなくタイムアウトした場合は申請者に通知する。

f:id:kurakurattyo:20211229223711p:plain

1.承認アクションにタイムアウト設定を実施する

「開始して承認を待機」アクションの右側「…」>「設定」をクリックします。
設定画面を開いたら下図赤枠内で期間(承認待ちする時間)を設定します。

f:id:kurakurattyo:20211229231511p:plain

期間を設定する際は、以下のフォーマットに合わせて「ISO 8601」形式で表現します。
「P」は開始文字、「Y/M/D」は年月日、「T」は時間、「H/M/S」は「時分秒」を表します。
[n] には数値を入力してください。

P[n]Y[n]M[n]DT[n]H[n]M[n]S

Power Automateの1つのフローが継続して稼働できるのは最大30日間です。
例えば、60日設定として「P60D」と入力した場合は上限30日を超えるため、下記エラーが表示されます。
また、「Y(年)」も30日を超える設定となるため利用できません。

f:id:kurakurattyo:20211229230958p:plain

具体的な利用例は下記の通り。 設定後に「完了」ボタンをクリックします。
※「H/M/S」の入力がなければ、T の記述は不要です。

# 20日後にタイムアウトさせたい
P20D

# 2日と16時間後にタイムアウトさせたい
P2DT16H

# 36時間後にタイムアウトさせたい
PT36H

# 10時間20分30秒後にタイムアウトさせたい
PT10H20M30S

2.タイムアウトした時にアクションを実行する

承認待ち状態でタイムアウトになった時に起動するアクションを設定します。
「開始して承認を待機」の直後にタイムアウト時に起動するアクション」を追加します。

アクション名の右側「…」>「実行条件の構成」をクリックします。

f:id:kurakurattyo:20211229232502p:plain

下図の通り「がタイムアウトしました」のみにチェックを入れて「完了」をクリックします。 f:id:kurakurattyo:20211229233704p:plain

これで、「開始して承認を待機」がタイムアウトした時に「メールの送信(V2)」が起動するようになりました。
しかし、このままではタイムアウトしなかった場合の処理が考慮されていません。
タイムアウトした場合」と「承認/却下の応答があった場合」で処理を分岐させる必要があります。

3.処理を分岐する

タイムアウトした場合」と「承認/却下の応答があった場合」で処理を分岐させるため、 期限を設定したアクションの直後で「並列分岐の追加」をクリックし「承認/却下の応答があった場合」に起動するアクションを追加します。

f:id:kurakurattyo:20211229234555p:plain

結果、こんな感じに分岐します。

f:id:kurakurattyo:20211229234731p:plain

これで、承認待ちフローに期限を設け、かつ、タイムアウトしても処理を続けられるようになりました!
Power Automate を使って承認フローを作成する機会は多いと思いますので、是非参考にして頂けますとすごく嬉しいです。

【PowerApps】前回登録したデータを初期値として表示する方法

・はじめに

以前、PowerApps で週報アプリを作成する機会があり、要件の一つとして、
 「前回自分が登録したデータを初期値としてアプリに表示したい」
というのがあり、なんとか形にできたので今回はその方法を記事にしました。

・目次

・実現したいこと

SharePointリストに格納されているアイテムから、自分が一番最後に登録したデータを PowerApps の フォーム に初期値として表示させる。

・サンプル リストの構成

サンプルとして、SharePoint で「週報」リストを作成しました。
リストには下表の列を用意しています。
f:id:kurakurattyo:20211220225138p:plain

列 表示名 列 内部名 列 種類 既定/カスタム
タイトル Title 1行テキスト 既定列
本文 Body 複数行テキスト(書式なし) カスタム
選択肢 Choice 選択肢(ドロップダウン) カスタム
登録者 Author ユーザーまたはグループ 既定列
登録日時 Created 日付と時刻 既定列

・実装方法

さっそく、サンプルアプリを作ってみましょう。

1.コネクタをアプリに追加する

 下記2つのコネクタをアプリに追加します。
  - Office365ユーザー コネクタ
  - SharePoint コネクタ (上記の 週報リスト に接続)

2.アプリの画面を構成する

SharePoint リストから1件のデータを表示させるため、Screen1 を下図のように作成します。

f:id:kurakurattyo:20211220225546p:plain

パーツ 備考
Form1 赤枠内が Form1 です。週報リストに接続します。
表示する列は「タイトル」「本文」「選択肢」
UserNameLabel アプリの使用者名を表示します。
使用者の前回登録値を取得する際にもこの値を利用します。

3.各パーツを設定する

----- Form1 の設定---------------------------------------------
DataSource は、週報リスト(SharePointリスト)を指定します。
アプリに表示する列は、「タイトル列」「本文列」「選択肢列」です。
※DataCardValue の番号は上図内と異なると思いますので、その点は読み替えてください。

DefaultMode は、新規作成用のフォームにしたいので「FormMode.New」にします。

f:id:kurakurattyo:20211220225918p:plain

----- UserNameLabel の設定---------------------------------------------
「UserNameLabel」の「Text」に下図の通りに設定します。
アプリ使用者の名前を表示させる目的と、使用者の前回登録値を取得するための条件としても利用するので、必ず設置するようにしてください。

Office365ユーザー.MyProfileV2().displayName

4.Screen表示時の処理を設定する

アプリの画面(Screen)を表示するタイミングで「前回登録したデータを取得する」処理を実行したいので、Screen1 の OnVisible に下記コードを設定します。

ClearCollect(ListCollection,Filter(週報リスト,UserNameLabel.Text in 登録者.DisplayName));
Set(lastbody,First(Sort(ListCollection,登録日時,Descending)));

上記の説明は下図の通りです。

f:id:kurakurattyo:20211220230310p:plain

これで、アプリの使用者が前回登録した最新のデータを、週報リストから取得して変数 「lastbody」 にセットすることができるようになりました。
以降は、この変数を利用して各所に初期値を設定していきます。

5.タイトル列に前回登録した値を表示する

タイトル 列には、「DataCardValue1」の「Default」で下図の通り設定します。

f:id:kurakurattyo:20211221231146p:plain

6.本文列に前回登録した値を表示する

本文列には、「DataCardValue6」の「Default」で下図の通り設定します。

f:id:kurakurattyo:20211221231226p:plain

7.選択肢列に前回登録した値を表示する

選択肢 列はコンボボックスです。
初期値を設定する場合は、選択肢 列である「DataCardValue4」のDefaultSelectedItemsを下図の通り設定します。

f:id:kurakurattyo:20211221231348p:plain

8.結果確認

上記まで完了後は、保存・公開してアプリをテストします。
アプリのプレビューでは Screen の更新ができないため確認ができませんので、ご注意ください。

注意事項

アプリ公開後の初回起動時はなぜか、うまくデータが読み込めませんでした。
アプリをF5キーなどで更新すると、以降は毎回データを読込んで初期値として設定されるようになります。

本記事もアイデアの一つとして参考にして頂けると嬉しいです。

【Exchange】階層型アドレス帳 の設定方法

・はじめに

こんにちは、くらっちです。
仕事で階層型アドレス帳を作成する機会があり、 備忘のため階層型アドレス帳の特徴や手順をまとめることにしました。

・目次

・階層型アドレス帳の特徴

階層型アドレス帳の有効化、無効化は PowerShell のみ実施可能。

・「配布グループ」「メールが有効なセキュリティグループ」は階層型アドレス帳にできる。
・「M365グループ」「動的配布グループ」などは階層型アドレス帳にできない。

・階層型アドレス帳を利用できるのはクライアント版Outlook のみ
・標準では、OWA(Outlook on the web)で利用できない。
階層型アドレス帳の有効化後、反映まで最大48時間かかる場合がある。

・事前準備

階層型アドレス帳を構成する手順を実施する前に最低限、下記の準備が必要です。
1.連絡先のグループ化、階層化
2.各グループに所属するメンバーの一覧化

3.EXO V2 モジュールがインストールされている事。
4.EXO のアクセス許可(Exchange管理者や全体管理者など)を持っている事。
5.PowerShell で EXO に接続している事。

モジュールのインストールと、EXO への PowerShell 接続方法は下記リンク先をご覧ください。
「基本認証」の方は、セキュリティ上の問題により今後廃止されるらしいので、「MFA または 先進認証」による認証がうまくいかない場合に利用してください。

Exchange Online PowerShell に接続する :MFA または 先進認証 - Docs
Exchange Online PowerShell に接続する :基本認証 - Docs

・階層型アドレス帳の作成

PowerShell で ExchangeOnline に接続します。
階層型アドレス帳を作成するためには、PowerShellで「階層のルート設定」や「階層グループの作成」を行う必要があります。

1.グループを作成する

階層型アドレス帳は「配布グループ」か「メールが有効なセキュリティグループ」が必要です。
Microsoft 365管理センターで作成したグループも階層化できますが、 複数のグループを一度に作成するのであればPowerShellを利用する方が早くて簡単です。

下記コマンドで配布グループを作成します。

New-DistributionGroup -Name "kuramoto_Contoso.Ltd" -Alias "KuraCon"
New-DistributionGroup -Name "総務部" -Alias "KuraSoumu"
New-DistributionGroup -Name "総務部1課" -Alias "Soumu-1"
New-DistributionGroup -Name "総務部2課" -Alias "Soumu-2"
New-DistributionGroup -Name "営業部" -Alias "KuraEigyo"
New-DistributionGroup -Name "営業部1課" -Alias "Eigyo-1"

2.ルートの設定

階層化するグループの作成後、階層型アドレス帳の有効化と、ルート(最上位の階層)を決定します。
"" 内は、グループの表示名で大丈夫です。

下記コマンドで階層のルートを設定します。

Set-OrganizationConfig -HierarchicalAddressBookRoot "kuramoto_Contoso.Ltd"

3.グループを階層グループに指定

作成したグループを階層アドレス帳に組み込むための設定を行います。
階層グループにする対象は全て -IsHierarchicalGroup $true にします。
false のグループは階層型アドレス帳に表示されないのでご注意。
-Identity 部分はグループの表示名で大丈夫です。

下記コマンドで配布グループを階層グループに指定します。

Set-Group -Identity "kuramoto_Contoso.Ltd" -IsHierarchicalGroup $true
Set-Group -Identity "総務部" -IsHierarchicalGroup $true
Set-Group -Identity "総務部1課" -IsHierarchicalGroup $true
Set-Group -Identity "総務部2課" -IsHierarchicalGroup $true
Set-Group -Identity "営業部" -IsHierarchicalGroup $true
Set-Group -Identity "営業部1課" -IsHierarchicalGroup $true

4.グループを階層化する

グループを階層化します。
-Identity には、親となるグループ名を指定します。
-Members には、子となるグループ名を指定します。

Update-DistributionGroupMember -Identity "kuramoto_Contoso.Ltd" -Members "総務部","営業部"
Update-DistributionGroupMember -Identity "総務部" -Members "総務部1課","総務部2課"
Update-DistributionGroupMember -Identity "営業部" -Members "営業部1課"

上記の結果イメージはこんな感じ。

f:id:kurakurattyo:20211216230015p:plain

5.グループ並び順の変更

グループの並び順を設定します。
並び順は同じ階層内でそれぞれ設定が可能です。
-SeniorityIndex の値が大きいほど、並び順は上位になります。

Set-Group -Identity "営業部" -SeniorityIndex 20
Set-Group -Identity "総務部" -SeniorityIndex 100

6.グループにユーザー追加

各グループにユーザー(メンバー)を追加していきます。
Microsoft 365管理センターでも追加はできますが、一度に複数ユーザーを操作するのであれば PowerShell を利用する方が早くて簡単です。

Add-DistributionGroupMember -Identity "総務部1課" -Member "Mitsui_H@contoso.com"
Add-DistributionGroupMember -Identity "総務部1課" -Member "Miyagi_R@contoso.com"
Add-DistributionGroupMember -Identity "営業部1課" -Member "Sakuragi_H@contoso.com"

7.ユーザーの並び順変更

グループ内のユーザー並び順を設定します。
-Identity 部分はユーザーの表示名やプリンシパル名で大丈夫です。
-SeniorityIndex の値が大きいほど、並び順は上位になります。

Set-User -Identity "Mitsui_H@contoso.com" -SeniorityIndex 100
Set-User -Identity "Miyagi_R@contoso.com" -SeniorityIndex 80

8.動作確認

クライアント版 Oultook を起動します。
メインメニューから「アドレス帳」選択します。
「組織タブがあること」と「階層アドレス帳があること」を確認します。

完成形はこんなイメージです。
f:id:kurakurattyo:20211216230741p:plain

・注意事項

階層型アドレス帳を有効化してから反映まで最大48時間かかる場合があります。
即時反映させたい場合や48時間経過しても階層型アドレス帳を確認できない場合は下記操作を実施してください。

対処方法1:exchangeキャッシュモードの解除

まずは、exchangeキャッシュモードの解除を行う方法です。

1.Outlookを起動します。
2.ファイルタブ > 情報 > アカウント設定 > アカウント設定 をクリック
3.メールタブで対象アカウントをダブルクリック
4.「Exchange キャッシュモードを使用して、~」のチェックを外す。
5.「次へ」をクリックして完了します。
f:id:kurakurattyo:20211216230536p:plain
念のため、Outlookを再起動した後、階層型アドレス帳が表示されるか確認してください。

対処方法2:プロファイルの再作成

対処方法1でも反映されない、もしくは48時間待っても反映されない場合は、下記手順によりプロファイルの再作成を行ってください。

プロファイルの作成
1.Outlookを起動します。
2.ファイルタブ > 情報 > アカウント設定 > プロファイルの管理 をクリック
3.メール設定 画面で、「プロファイルの表示」をクリック
4.追加ボタンをクリック > 新しいプロファイル名を入力 > 「OK」をクリック
5.追加するアカウントの名前、メールアドレス、パスワードを入力します。
6.「次へ」をクリックします。
  ※5で入力したメールアドレスとパスワードが正しければ、自動的にネットワーク接続やメールサーバーへの接続は完了します。入力が間違っていた場合は再入力するか手動での設定を求められるので指示に従い操作してください。

f:id:kurakurattyo:20211216230920p:plain

7.処理が完了したら Outlook を再起動して、新しいプロファイルで Outlook にサインインできる事を確認し、階層型アドレス帳が表示されることを確認します。
8.7で正常にサインインできる事などが確認できたら、古いプロファイルは削除します。

プロファイルの削除
1.Outlookを起動します。
2.ファイルタブ > 情報 > アカウント設定 > プロファイルの管理 をクリック
3.メール設定 画面で、「プロファイルの表示」をクリック
4.削除ボタンをクリック > 警告メッセージが表示されたら「OK」をクリック

・参考URL

階層型アドレス帳 (Exchange Online) - Docs 階層型アドレス帳を有効または無効にする - Docs

【PowerApps】アプリに完了ダイアログを表示させる方法

・はじめに

こんにちは、くらっちです。

今回紹介するのは、Power Automate の処理後に Power Apps にダイアログを出す方法です。
Power Automateからの戻り値を利用してダイアログ(ラベル)の表示・非表示を制御します。

※この記事はQiita から移行して、最新の情報に更新しています。

f:id:kurakurattyo:20211120222740p:plain

・目次

・処理の流れ

今回は、「PowerApps で画像保存ボタンをクリック」⇒「PowerAutomate で処理」⇒「PowerApps に処理完了のダイアログを表示させる」アプリを例にご紹介します。
ダイアログを表示させる場合の、おおまかな流れはこんな感じ。

 1. Power Appsで保存ボタンをクリック
 2. ボタンクリックをトリガーにPower Automateが起動
 3. Power Automateの処理が終了
 4. Power Apps上で完了のメッセージを表示する

f:id:kurakurattyo:20211120225605p:plain

・実装方法

1.Power Automate側で対象フローの編集画面を表示

トリガーは「PowerApps」を選択します。
Power Appsから呼び出されるフローの編集画面を表示します。
処理の最後に「PowerApps または Flow に応答する」 を追加します。

f:id:kurakurattyo:20211120223041p:plain

2.「出力追加」をクリックして「テキスト」を選択

「PowerApps または Flow に応答する」を追加したら「出力追加」をクリックします。
「出力の種類を選択」で「テキスト」を選択します。

3.変数名と返り値を設定

変数名と設定値は任意です。好きに設定して下さい。
サンプルでは Power Apps に「Flowflg = 1」を渡すように設定しています。

f:id:kurakurattyo:20211120230358p:plain

5.フローを保存

フローを保存します。

6.Power Automateから戻り値を受け取る

Power Appsアプリの編集画面を表示します。
Power AppsからPower Automateを呼び出すアクション(ボタンなど)を下記のように修正します。

修正前(例)

 フロー名.Run(Label1.Text,Label2.Text,label3.Text);


修正後(例)

UpdateContext({Resp:
 フロー名.Run(Label1.Text,Label2.Text,label3.Text)
});
Set(ResultMessage,Resp.flowflg);

これで Power Automate 側から「flowflg」の値を取得できます。
取得した flowflg の値は、変数 ResultMessage にセットされます。

PowerAutomate の処理が未終了の場合は、ResultMessage に "0" が設定されており、
処理が終了したら ResultMessage に "1" が設定されている状態となります。

7.以降で、
ResultMessage = "0" の時は「完了ダイアログを非表示」にして、ResultMessage = "1" の時は「完了ダイアログを表示」するようにPower Apps を編集します。

7.完了ダイアログの配置と設定

完了ダイアログ表示中は他部分の操作ができないように、下図の通りにラベルとアイコンを設置します。
設置する際は「Cansel_Icon」が一番上に設置されていないと、アイコンをクリックすることができないので注意してください。

f:id:kurakurattyo:20211120230447p:plain


各パーツを下記の通り修正します。※デザイン部分は皆さんのセンスにお任せです。

BGCover_Label

項目 設定値 用途
Visible If(ResultMessage="1",true,false) 完了ダイアログの 表示 / 非表示 を制御
DisplayMode DisplayMode.View 表示モードに変更


Message_Label

項目 設定値 用途
Visible If(ResultMessage="1",true,false) 完了ダイアログの 表示 / 非表示 を制御
DisplayMode DisplayMode.View 表示モードに変更


Cansel_Icon

項目 設定値 用途
Visible If(ResultMessage="1",true,false) 完了ダイアログの 表示 / 非表示 を制御
OnSelect Set(ResultMessage,"0") クリック時に完了ダイアログを非表示にする

以上です。
皆様の Power Apps ライフのお役に立てば幸いです。