ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Excelブック のテーブルをソートするPower Automate クラウドフロー (Office スクリプトで)

Power Automate でつかえる Excel Online (Business)コネクタにはソート機能がありません。

テーブルデータを読み込んでソートという手段もありますが、"餅は餅屋"理論でOfficeスクリプトを呼び出す形でも並び替えが可能です。

説明

  • 今回のOfficeスクリプトは第3ソートキーまで対応しています。 第2、第3ソートキーは省略可能としています。
  • スクリプトを実行しているだけなのでAPI要求数が少ないメリットがあります。
  • OfficeスクリプトVBAと異なり特定のExcelブックに紐づかないのでこういう使い方もできて便利です。

Microsoft 365 E3 / E5 の環境で動作確認しています。 OfficeスクリプトとPowerAutomateが使える法人向けのライセンスであれば使えのではないかと思います。

実際にソートを実行するOfficeスクリプトを作成する

Excel online で空白のブックを作成し、自動化→新しいスクリプト

下記のコードをコピーしてコードエディターに張り付け、名前を付けてスクリプトを保存

function main(
    workbook: ExcelScript.Workbook,
    tableName: string,
    key1st: number,                  //colunm number 0-
    key1stOrder: number,   //1:ascending other:descending
    key2nd?: number,             //colunm number 0-
    key2ndOrder?: number,   //1:ascending other:descending
    key3rd?: number,             //colunm number 0-
    key3rdOrder?: number   //1:ascending other:descending
) {

    let ____1 = workbook.getTable(tableName);

    if (typeof key3rd != "undefined" && typeof key3rdOrder != "undefined") {
        // Custom sort on table ____1
        ____1.getSort().apply([{ key: key1st, ascending: Boolean(key1stOrder) }, { key: key2nd, ascending: Boolean(key2ndOrder) }, { key: key3rd, ascending: Boolean(key3rdOrder) }], false);
    } else if (typeof key2nd != "undefined" && typeof key2ndOrder != "undefined") {
        // Custom sort on table ____1
        ____1.getSort().apply([{ key: key1st, ascending: Boolean(key1stOrder) }, { key: key2nd, ascending: Boolean(key2ndOrder) }], false);
    } else {
        // Custom sort on table ____1
        ____1.getSort().apply([{ key: key1st, ascending: Boolean(key1stOrder) }]);
    }

    return 1;
}

Officeスクリプトのソートメソッドを各種パラメータをPowerAutomateフローから指定できるようにパラメータ化しただけのお手軽スクリプトです。

Power Automate クラウドフローから呼び出す

パラメータ 説明
場所 ソートしたいExcelブックの場所
ドキュメントライブラリ ソートしたいExcelブックのドキュメントライブラリ
ファイル ソートしたいExcelブック
スクリプト 上の手順で作成したOfficeスクリプト
tableName 【Officeスクリプトのパラメータ】Excelブックに定義されているテーブル名
key1st 【Officeスクリプトのパラメータ】第1ソートキー列(0から)
key1stOrder 【Officeスクリプトのパラメータ】第1ソートキーの昇順(1)・降順(1以外)
key2nd 【Officeスクリプトのパラメータ】第2ソートキー列(0から)
key2ndOrder 【Officeスクリプトのパラメータ】第2ソートキーの昇順(1)・降順(1以外)
key3rd 【Officeスクリプトのパラメータ】第3ソートキー列(0から)
key3rdOrder 【Officeスクリプトのパラメータ】第3ソートキーの昇順(1)・降順(1以外)

実行してみる

ソート条件

  1. 都道府県:昇順
  2. 年齢:昇順
  3. 性別:降順

実行結果

  • before

  • after

SharePoint ホームサイトを使用しない新しいViva Connections ホームを設定してみた(2/2) - 眺めてみる編

SharePoint ホーム サイトを使用しないViva Connections は簡単?(1/2) - セットアップ編」の続きです

 

1.Viva Connections が新しくなった

Viva Connections は当初はTeams の中にSharePoint ホームサイトを組み込む+αの機能でしたが、2023年の新機能でSharePointホームサイトなしでの利用が可能となりました。

※英語表記では "Viva Connections"と複数形ですが、日本語表記では"Viva コネクション"と単数系が正式な名称のようです。

新しいViva Connections ホームを眺めてみました。

 

2.Viva Connections の新しいホームを眺めてみる



新しいVivia Connections ホームは4つの要素から構成されています。

  • Viva アプリへのリンク
  • ダッシュボード
  • フィード
  • リソース

2-1.Vivaアプリへのリンク

 表示しているユーザーが利用可能なVivaアプリが一番目立つところに表示されます。

 

2-2.ダッシュボード

タイル表示で色々なアイテムを表示することができます。

SharePoint ホームサイトで利用できるダッシュボードWebパーツと共通のデータが表示されます。

2-2-1.ダッシュボードの編集

「編集」ボタンからダッシュボードの編集ができます。

初めて「編集」ボタンを押したときはこのようなメニューが表示されます。

 

<インフォメーションワーカー>

インフォメーションワーカーを選択してみると初期の3つのカードに加えてインフォメーションワーカー向けのカードが自動で追加されました。

  • トップニュース
  • Viva Topics - 投稿 ※要Viva Topicsライセンス
  • Viva Topics - 発見 ※要Viva Topicsライセンス

 

<現場担当者>

現場担当者を選んでみると、初期表示されていたVivaラーニング・賞賛が削除され、下記3つのカードが追加されていました。

  • シフト
  • 承認
  • トップニュース

 

初期テンプレートが2つから選べるようになっただけで、任意のカードを追加・変更・削除できる点は以前と変わりありません。

2-3.フィード

Viva Engage、SharePoint ニュース、Stream の情報がパーソナライズされて表示されるようです。 

SharePointホームサイトで利用できる "Viva Connections Feed" Webパーツと共通のデータが表示されます。

 

2-4.リソース

リソースは3つの要素で構成されています。

  •  ナビゲーション
    • リンク集を表示することができます
    • 「編集」ボタンをクリックすることでメニューを構成することができます
    • SharePoint ホームサイトのグローバルナビゲーションと共通です
  • よくアクセスするサイト
    • よくアクセスするSharePointサイトが表示されます
  • フォロー中のサイト
    • フォローしているSharePoint サイトが表示されます

 


2-5.右上の編集ボタン

ページ右上にある「編集」ボタンをクリックするとこのページの設定ができそうですが、現状は背景画像の変更のみできるようです。

こんな感じで画面上部のみに反映されるようです。

 

2-6.右上の3点リーダー

現状ではアクセス権の設定ができるようです。
SharePointサイトの設定と同様な雰囲気の画面です。

 

 

3.以前のViva Connection との違い

以前のViva Connections は PC のTeamsアプリではSharePoint ホームサイトで、モバイルTeams ではダッシュボード・フィード・リソースの3機能のみのシンプルなホームとなっており、両者のエクスペリエンスに大きな差がありました。

PCにはSharePointサイトのいろいろなWebパーツで情報を開示できますが、モバイルはダッシュボードのみとなっており、情報量に差がでてしまう状況でした。

新しいホーム画面はモバイル向けホームとイメージの統一化が行われたものと考えて良さそうです。



4.気になったところ

4-1.謎のSharePointサイト - Viva Home が新しいホーム画面の本体

フォロー中のサイトに「Viva Home」という見慣れないサイトが増えていました。

このサイトにアクセスしてみると...

 ページを見ると"Dashboard.aspx"が存在しています

SharePointホームサイトを使用しない場合ダッシュボードがどこに保存されるのか謎でしたが、どうやら専用のSharePointサイト"Viva Home"が作成されダッシュボードが保存されるようです。

ちなみに、Dashboard.aspx を削除するとダッシュボードは初期状態に戻ります。

新しいViva Connections ホームのアクセス権も、この"Viva Home"サイトのアクセス権と連動しているようです。

ホームの背景画像も、このサイトの サイトのリソースファイル → VivaHome フォルダに保存されていました。

※Viva Homeといえば...関係ありませんがホームセンターを連想してしまいますwww.vivahome.co.jp

4-2. ダッシュボードを複数人で編集する場合の注意ポイント

ダッシュボードを編集し、[再公開] または [変更の破棄] をするまでは、SharePointサイト上ではチェックアウトされた状態になり、複数人で同時編集しようとするとエラーが発生します。

ですが、この排他処理が働かず別のユーザーで同時に編集モードに入れてしまい、保存した結果 Dashboard.aspx” が増殖してしまう事がありました。
再現条件は不明ですがこのようなことが起きる可能性がありますのでご注意ください。

 

 

SharePoint ホームサイトを使用しない新しいViva Connections ホームを設定してみた(1/2) - セットアップ編

1.Viva Connections が新しくなった

Viva Connections は当初はTeams の中にSharePoint ホームサイトを組み込む+ダッシュボードの機能でしたが、2023年初旬の新機能でSharePointホームサイトなしでの利用が可能となりました。

※英語表記では "Viva Connections"と複数形ですが、日本語表記では"Viva コネクション"と単数系が正式な名称のようです。

ホームサイトを作成せずにViva Connections を設定してみました。

 

 

2.Viva Connections アプリのセットアップ

2-1.Teams管理センターでViva Connections アプリを有効化する

  1. [Teams アプリ] →[アプリの管理] ページで"Viva Connections" を検索し、Viva Connections アプリを選択します
    • ※以前はアプリは既定でブロックされており許可する必要がありましたが、2023年4月時点に作成したテナントでは既定で許可されていました。
  2. [カスタマイズ]をクリックし各項目の設定を行います

    • 短い名前:Teamsでの表示名になります
    • 簡単な説明
    • プライバシーポリシーのURL
    • WebサイトのURL
    • 使用条件のURL
    • 詳細な説明
    • アイコン:192x192 のpng ※Teamsに表示されるアイコンになります
    • アウトラインアイコン:32x32 の背景透過png
    • アクセントカラー:アイコンの背景色にあった色を選ぶ
  3. [適用]し[公開]します

ここまででVivaConnectionsアプリは有効化されます。

2-2.まずは動作確認

アプリバー [アプリ]から"Viva Connections"または短い名前として設定した名前を検索して追加します。

アプリを追加

エラーなく表示されていればViva Connections アプリをひとまず使えるようになっています。

 

2-3.Teams管理センターでViva Connections アプリをTeamsのアプリバーに配置する

正式に展開する際は下記のセットアップポリシーで対象ユーザーに一斉展開できます

  1. Teams アプリ]>[セットアップ ポリシー] のグローバル (組織全体の既定値) をクリックします (全ユーザーの既定のポリシーです)
    • 一部のユーザーでテストする場合はセットアップポリシーを追加してテストするユーザーに割り当てましょう
  2. [ピン留めされたアプリ]→[アプリを追加]をクリック
  3. "Viva Connection"(またはカスタマイズで変更した短い名前)でアプリを検索
  4. [追加]します
  5. [追加]します
  6. 好みの場所にアプリアイコンをドラッグして移動します
  7. 画面下部にある[保存]をクリックします

以上で(SharePoint ホームサイトなしの)Viva Connectionsのセットアップは完了です。

 

SharePoint ホームサイトを作るのはそれほど難しいものではありませんが、VivaConnections 組み込みホームが提供されたことでより迅速に利用開始できるようになっています。

 

参考リンク

 

SharePoint ホームサイトを使用しない新しいViva Connections ホームを設定してみた(2/2) - 眺めてみる編」に続きます!

 

Excelブックから Teamsチームメンバーを一括追加・削除する Power Automate クラウドフロー [超簡易版]

このフローの目的

指定したTeamsチームのメンバーをExcelファイルの内容で追加または削除をできるだけシンプルに実現する超簡易版フローです。

Power Automateに不慣れな方でも作れるように極力アクションを少なくしています。

その代わり下記のような制限があります。ちゃんと作ればこれらの制限はすべて回避できますので、次のステップとしてチャレンジしてみてください。

  • 所有者は削除できません。削除する前にメンバーに降格させておく必要があります。
  • 既にメンバーの人を追加しようとするとエラーになります。
  • メンバー権限で登録済みの人を所有者に変更する、またはその逆の変更はこのフローではできません。
  • メンバー登録していない人を削除しようとするとエラーになります。
  • 256行程度まで対応可能ですが、それ以上は"改ページ処理"を有効化することで対応可能です。
  • エラー処理をしていないので途中でエラーが発生すると中断します。

 

ちゃんと作りこんだフローの例としては、Japan Dynamics CRM & Power Platform Support Blog の Power Automate で Teams のチーム作成とメンバー追加を自動化 の記事などがおすすめです。

jpdynamicscrm.github.io

Excelブックの準備

以下のような条件でExcelブックを用意します。

  • テーブルを作成する
  • OneDrive for Businessに保存する
項目名 必須? 解説
処理

追加:チームに追加

削除:チームから削除

メールアドレス

処理対象のユーザーのメールアドレス

権限


"追加"時
必須

所有者 or メンバー

Excelブックのサンプル

フロー全体図

 

フローの解説

使用するコネクタ・アクション

  • Excel Online (Business)コネクタ
    • 表内に存在する行を一覧表示 アクション
  • コントロールコネクタ
    • スイッチ アクション
    • Apply to each (繰り返し) アクション
  • Office 365 Group コネクタ
    • グループからメンバーを削除 アクション
  • Microsoft Teamsコネクタ
    • チームにメンバーを追加する
  • スケジュール
    • 待ち時間 アクション

ポイント

  • チームの所有者権限を持つ人がこのフローを実行できます。メンバー権限では実行時にエラーが発生します
  • 「チームにメンバーを追加する」アクションの式について
    • 「新しく追加されたユーザーがチームの所有者である必要があります」パラメーター(長い)の指定のためにここだけ式を使用しています。
    • if(equals(items('Apply_to_each')?['権限'],'所有者'),True,false)
  • 全員メンバーとして追加で構わない場合は、Office 365 Groups コネクタの「グループへのメンバー追加」アクションを使った方が式が不要となりシンプルにできます。
    • こんな感じ
  • 処理結果をすぐに確認したい場合はWebブラウザー版Teamsで確認をする。
    • Teamsアプリには反映されるまでやや時間を要する場合がありました。Webブラウザー版Teamsの方が速く反映される印象です。
  • いきなり実運用しているチームでフローで試すのはお勧めしません。まずはテスト用チームを用意してそちらでしっかりテストすることを強くお勧めします。

 

Teams チャネルのWikiをOneNoteへエクスポートするツールが使えるようになったので動作チェックしてみた(1/2)

Teams のチャネル にあるWiki タブは2024年1月で廃止されることがアナウンスされています。

Teamsのパブリックプレビュー環境にて、WikiからOneNoteへのエクスポートツールの提供が始まったので動作を確認してみました。

※2023/4/23追記

通常環境でも展開されたため動作をチェックしました。

パブリックプレビューの時と違いはないようです。

※2023/6/1更新

2023/5/31にWikiが追加できなくなっていることを確認したので追記しました。

「移行に向けたメッセージ表示の変遷」を書き直しました。

※2023/6/3 更新

Wikiのサポートが終了した2023年6月以降は別の記事にまとめることにしました。

この記事の続きはこちらをご覧ください。

 

目次

 

 

エクスポートツールはこんな感じ

「詳細を取得」ボタンをクリックすると

以上で完了です。

 

エクスポート後の様子

エクスポートで作成されたOneNoteタブ

"メモ"という名前でOneNoteタブが追加されます。軽く見た限り文字化けなどもなくエクスポートできているようです。

エクスポート後のWikiタブ

エクスポートした後のWikiタブは削除されずに残りますが、読み取り専用となります。こちらに表示されるメッセージではOneNoteタブの名前は"ノート/メモ"タブとなってますが、実際には"メモ"という名前で作成されていますね。

 

注意事項

OneNoteへのエクスポート機能が提供されるのは標準チャネルのみで、プライベートチャネルには提供されない事がアナウンスされています。

OneNote ノートブックへの Wiki のエクスポート - Microsoft サポート

 

移行スケジュールの公開情報(2023年5月末時点)

  1. [2023年2月~2023年3月]
    1. Wikiの新規作成ができなくなる→※2023/5/31作成できなくなった
    2. 既存Wikiの読み書きは可能なまま
    3. OneNote」へのエクスポート機能が提供される 
  2. [2023年6月]
    1. Wikiタブはサポート対象外になる
    2. コンテンツへのアクセスや読み書きは可能なまま
  3. [2024年1月]
    1. WikiタブはTeamsからアクセスできなくなる
    2. OneNoteへのエクスポートもできなくなる
    3. チームのSharePointサイトにはWikiファイルが残されているのでダウンロードして自分でなんとかすることはできるはず

 

移行に向けたメッセージ表示の変遷(〜2023年5月末)

私の環境で確認できた状況です。

  • 標準チャネル
    • メッセージのみ表示

      • 当初は全てこちらのメッセージでしたが、使われている(データが入力されている)Wikiは次のボタンありメッセージに切り替わりました。
      • 使われていないWikiはこちらのメッセージのままのようです
    • エクスポートツールのボタンあり

  • プライベートチャネル

    • プライベートチャネルはこちらの表示のまま変化ありませんでした。

 

エクスポートされたOneNoteノートブックはどこに保存されている?

チームのSharePointサイトの"サイトのリソース ファイル"に保存されています。

サイトの既定のノートブックにエクスポートされます。

 

複数のチャネルのWikiからエクスポートすると、単一のOneNoteノートブックにチャネル名のセクションごとに保存されます。従来Wikiはチャネルごとに独立していましたが、単一OneNoteノートブックにまとめられた事で使い勝手がだいぶ変わりそうです。

 

Wikiファイルはどこに保存されている?

チームのSharePointサイトの
サイトコンテンツ > Teams Wiki Data > チャネル名
に mht 形式で保存されています

 

2023年5月時点のWiki to OneNote エクスポートツールの状況はこんな感じでした。

まだパブリックプレビュー中の為、今後仕様が変わる可能性がありますのでご注意ください。正式リリースでも変化ありませんでした。

 

参考資料

techcommunity.microsoft.com

support.microsoft.com

 

 

2023年6月サポート終了以降の変化は別記事にまとめます

Teams チャネルのWikiをOneNoteへエクスポートするツールが使えるようになったので動作チェックしてみた(2/2)」もご覧ください。

sasami-axis.hatenablog.com

 

 

Exchange Online 予定表に登録したイベントを Teams のステータスメッセージに設定する Power Automate クラウドフロー

このフローの目的

  • 勤務状況をTeamsのステータスメッセージに表示したい。
  • 勤務状況と別に固定メッセージも表示したい

前提条件

  • Exchange Online 予定表に 勤務状況を登録している
    • イベントの件名が一致するものをステータスメッセージに設定する対象とする

フロー全体図

フローの解説

Office 365 Outlook - 予定しているイベントが間もなく開始されるとき (V3) トリガー

イベント開始の数分(誤差あります)前にこのフローが実行されます。

変数 - 変数を初期化する アクション

ステータスメッセージに表示する固定メッセージをこの変数に格納します。

コントロール - 条件 アクション

まもなく開始されるイベントの件名が、ステータスメッセージに表示したい内容どうかを件名で判断しています。 大した数がなく頻繁に変わるものでもないのでフローに直接記述してますが、設定情報として別の場所に保存する方が望ましいかも。

ステータスメッセージを設定する (SharePoint - SharePoint に HTTP 要求を送信します アクション)

Teams のステータスメッセージを変更するアクションは用意されていませんが、SharePointコネクタの"HTTP 要求を送信します" アクションでAPIで設定することができます。

設定項目 設定値
サイトのアドレス https://presence.teams.microsoft.com ※カスタム値として設定します
方法 PUT
URI /v1/me/publishnote
ヘッダー Content-type : application-json
ボディ { "message": "本日は「@{triggerOutputs()?['body/subject']}」です。@{variables('固定メッセージ')}<pinnednote></pinnednote>", "expiry": "@{concat(triggerOutputs()?['body/end'],'Z')}"}
{
    "message": "本日は「@{triggerOutputs()?['body/subject']}」です。@{variables('固定メッセージ')}<pinnednote></pinnednote>",
    "expiry": "@{concat(triggerOutputs()?['body/end'],'Z')}"
}

messageの末尾に <pinnednote></pinnednote> と記述すると「他のユーザーが自分にメッセージを送るときに表示する」が有効になります。 expiry で ステータスメッセージの有効期間を設定できます。ここではトリガーイベントの終了時刻を設定しています。 ※ 協定世界時(UTC)で設定する必要があります。

参考にしたサイト

powerplatformnikki.com

qiita.com

Teams コンパニオンモードで Teams会議 のリアクションを使いやすくする [自身のテナントで開催する会議限定]

Teamsアプリのバージョンアップで会議のリアクションのメニューが階層化されたことで、リアクションをいい感じのタイミングで出すことや、連打がやりづらくなってしまいました。


モバイルデバイスのTeamsアプリをコンパニオンモードで会議に参加することでリアクションを出しやすくなります。

 



用意するもの

  • 主として会議に参加するTeams利用できるデバイス(PCなど)
  • Teamsアプリが利用できるiOS または Andorid デバイス

※PC + iPhone、PC+Android で確認しました。

 

実施方法

  1. 1台目のデバイスで会議に参加する
  2. 2台目のiOSバイスで会議に参加する(1台目と同じアカウントで)
    バイスの参加方法は"このデバイスを追加する"

  3. 2台目のデバイスのTeams コンパニオンモード切り替わり、会議の画面構成がこのように変わります。

    コンパニオンモードではリアクションが常時表示される!





  4. リアクションが常時表示されるのでささっと押すことができます。
    リアクションはタイミングが大事だと思うので、すぐに押せる状態は使いやすいですね。



残念な点 (2023/4/6追記)

検証した限りでは、この方法は自身の所属するテナントで作成したTeams会議でしか使えないようです。他テナントの会議では、2台目のデバイスとして追加 or 転送の画面が表示されませんでした。

外部のオンラインイベントでこそリアクションを多用したかったのですが、残念です。

 

"Feedback Portal" に載せていただきました。賛同いただける方は投票ぜひご協力お願いします!

feedbackportal.microsoft.com

 

参考リンク

support.microsoft.com

techcommunity.microsoft.com