memomoji | nanamoji

Microsoft365周辺、Power Appsの勉強、備忘録

電話応対用-他の人のスケジュール確認アプリ

代表電話にかかってくる不特定の人の今日の予定を検索できるアプリを作りました。ちょこちょこと課題もあるので、今の自分のレベルのメモとして作り方を公開しておこうと思います。

アプリ外観

必要な機能

  • ユーザーを検索して今日のスケジュールが表示される
  • 翌日以降の予定も表示できる
  • 繰り返し予定、日をまたぐ予定、終日予定も表示する。
  • 今現在の予定がわかる
  • よく検索する人はボタンで表示できるようにする
  • 検索した相手にチャットで電話メモを送れるようにする

実装

予定を取得する

益森さんのQiita記事を参考にさせていただきました。Microsoft Graph API や委任について、考慮すべき事項について詳しくわかりやすく書いていただいていますので、まずはこちらの記事にお読みください。
Power Platform で他人の予定表を操作する #PowerAutomate - Qiita

一度に取得できるイベントの数が10個までのようでしたので、今日の業務時間内の予定だけ取得するため、HTTPリクエストのURLを変更します。
List calendarView - Microsoft Graph v1.0 | Microsoft Learn
ここらへんのLearnを参考に調べていくと、下記でstartとendを指定して既定のカレンダーのイベントを取得できそうです。
日本語のLearnだと、”/calendar/calendarView” のところが "/calendarView" となっていますのでご注意を。PDFだと正しいです。

GET /users/{id | userPrincipalName}/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}

startDateTimeとendDateTime は、"2024-04-29T11:00:00.0000000" の書式で書きます。UTCなので、これで日本時間の9:00から取得できます。

グローバル変数 gblCalendar に、取得したイベント一覧をテーブルにして入れる部分は下記になります。
変数は別のところで指定しています。

  • CurrentUserN UPN
  • CurrentDate  取得する日付(2024-04-29)
Set(
    gblCalendar,
    Table(Office365Outlook.HttpRequest(
        "https://graph.microsoft.com/v1.0/users/"& CurrentUserN &"/calendar/calendarView?startDateTime="& CurrentDate &"T00:00:00.0000000&endDateTime="& CurrentDate &"T11:00:00.0000000",
        "Get",
        "",
        {ContentType: "application/json"}
    ).value)
); 

これでちゃんと、日付をまたぐ予定も繰り返し予定も終日予定も取得できます。 非公開の予定は件名が「非公開の予定」となります。

予定の入っている時間帯を色付けする

予定の入っている時間と今の時間

ここは、もっとスマートなやり方があるだろうと思いつつ、一つ一つ泥臭く設定しています(確実に無駄なことをしています。色くらいは変数にしたらよかったと後に後悔しました。)。
上段は、水平コンテナにテキストラベルを10個(9~18)置いて、各テキストラベルのFillに一つ一つ下記のようなコードを書いています。

If(
    ThisItem.Value.isAllDay,RGBA(133, 107, 244,1),
        If(
            And(
                DateTime(Year(CurrentDate),Month(CurrentDate),Day(CurrentDate),10,00,00) > DateAdd(DateTimeValue(ThisItem.Value.start.dateTime),-TimeZoneOffset(),TimeUnit.Minutes), DateTime(Year(CurrentDate),Month(CurrentDate),Day(CurrentDate),9,00,00) < DateAdd(DateTimeValue(ThisItem.Value.end.dateTime),-TimeZoneOffset(),TimeUnit.Minutes)), RGBA(133, 107, 244,1),RGBA(255, 255, 255, 1)
         )
)

「9」のテキストラベルでは、「開始時間が 10:00 未満、終了時間が 9:00 より後」をAND条件として、trueのときに着色します。以下同様に時間の部分だけ変えてやります。

今の時間は、9~18の入っている水平コンテナと同じ幅のコンテナにオレンジの四角を置いてやります。9~18はそれぞれ幅が30でギャップは0なので、オレンジのXに、下記の式を入れてやると今の時間のところに移動します。19時を過ぎるとコンテナの外側に出ていくので表示されなくなります。オレンジのない時間は電話対応する時間ではありません、帰りましょう。

(Hour(CurrentTime)-9)*30

1時間単位でしか表示していませんし、1日の予定が10件以上になった場合は漏れますが、電話対応用であれば概ね十分かなと思ってます(Outlookアドオンの予算が出なかったので妥協点として)。
久し振りにアプリを作ったので色々と調べながらだったのと、罠にはまったり余計なことをしたりしていたというのはありましたが、休日3日を使って出来上がりました。8割趣味なのでいいのですが、業務時間内に他の仕事をしながら作り上げるのは大変なことです。アプリに限らず、誰かが何かをやってくれたおかげで便利になったり助かったりしたら遠慮なく感謝をよろしくお願いします。

Teams の Power Apps でラジオボタンがおかしいとき

Microsoft Teams の Power Apps でラジオコントロールの表示がおかしくなったときの対応方法です。
情報が見つけられなくてだいぶ時間を溶かしてしまったので、メモとして残しておきます。

Itemsが数値に

こんな感じで、Itemsに設定した内容が数値に置き換わっています。

Itemsを数値にしたもの

Itemsに数値を入れてもそのままは表示されません。なんなんでしょう。

こちら、設定で「モダンコントロールとモダンテーマ」をオンにすると直ります。

設定:モダンコントロールとモダンテーマ

元々あったコントロールは直りませんので、新しいラジオコントロールを追加してください。

正しく表示されました

なお、モダンコントロールにすると今までのコントロールとはプロパティが異なっていて、TeamsのPower Appsでは設定できなかったホリゾンタルレイアウトも使えるようになります。
TeamsのPower Apps と通常の Power Apps とはちょこちょこ違うところがあって困ることがありましたが、同じモダンコントロールに統一されていくのでしょうか。だとしたら嬉しいことです。

ゲーム大会用アプリを作ったので紹介させてください

この記事は、Power Apps Advent Calendar 2023 12/20 担当分です。

qiita.com

想定していたよりもApps成分低めになってしまい申し訳ないです。

前提と要件

4年振り開催のクリスマス会で、豪華景品の当たる大クイズ大会を行うことになりました。
例年趣向を凝らしたゲーム大会を企画していますが、今年はFormsを使ってテレビのオールスター大感謝祭のようなことができないかということで、作ってみたアプリのご紹介です。

要件

  1. 各自がスマホなどで回答できる(ログイン不要)
  2. なるべく何回かチャンスがあるようにしたい
  3. 正解率と回答の速さを競いたい。正解者の中から回答の早かった順番が出ると盛り上がるのではないか
  4. 最下位賞も出したい

出題と回答送信 Formsで作成

クイズはFormsを使います。

  • すべてのユーザーが回答可能にする
  • Excelを直接データソースにしたいので、グループのフォームで作成する
  • Excelを直接データソースにしたいので、クイズではなくフォームで作成する

たいした数ではないとは言え、できれば Power Automate での処理は避けたいと思い、このようにしました。もしも現場で何かあったときに、できるだけ調べる箇所が少ない方がよいと思ったからです。
support.microsoft.com の記述を見るとExcelを開かないとデータが同期されないようにも見えますが、Apps側で読み込めば大丈夫です。

Microsoft Forms と Excel のブック - Microsoft サポート

設問や回答にイメージも使えるし、いい感じにできました! こんな感じでFormsを4つ作成します。

Forms画面

問題と解答はExcelを共有して運営メンバーに登録してもらい、出揃ったら取捨選択してFormsに登録し、Excelに番号を振ります。

問題回答テーブル
(正解欄と正解文字列欄は一つにできるかも)

答え合わせ Power Appsで作成

まず、各自にFormsにアクセスしてもらうためのQRコードを表示したスタート画面を用意。

スタート画面

各自、スマホでFormsを開いて回答。その間MCが盛り上げます。
回答を締め切ったら、答え合わせです。

答え合わせ

問題回答テーブルから、表示する行を下のギャラリーのボタンで切り替えているだけです。 右下のチェックを押すと、正解が黄色くハイライトされます。これも、正解欄の内容によってYの値を変えているだけです。 ゲームMC担当の人が上手いので、画面は地味ですがたぶんいい感じに盛り上げてくれます。(実際の画面は画像を貼って多少派手にしています)

作りながら薄々気づいていましたが、PowerPointでも十分な感じがしますよね。アニメーションなんかを使って簡単にかっこよくできるかもしれません。従来はそうやっていました。問題一覧のExcelはこんな感じでずらーっと縦横に並べていました。

以前の問題Excel
PowerPointで作業しやすいようにした工夫で、当時はそういう方法しかなかったのです(PowerPointってExcelから差し込みできないですよね?)

今回はデータから作りましょうということで、色々な職種のメンバーみんなが、上の問題回答テーブルのデータがこうなる(縦横に散らし書きしたExcelはデータソースとして使いづらい)ことを経験できたという効果もあったかなと思っています。工数で考えると、Appsをいじってる間にパワポを頑張った方が早く終わったという意見はあるかもしれないですが、それでは失敗したときの手戻りが痛いのです。

正解者発表 Power BI

正解者発表画面もAppsで頑張ってみたのですが、時間の計算が難しかったのでPower BIの方でやることにしました。 見せ方をどうするかはまだ検討中ですが、全問正解者が何名という人数を見せて期待値を上げ、順位を発表します。

正解者表示

タイムは、各ピリオドで最初に回答送信した人の回答時間を各回答者の回答時間から引いた秒数にしています(画面はテストデータなのでとんでもない秒数になっています)。
QRコードを読んでFormsを表示してから合図があるまで回答ページに進まないようにしてもらう場合はこの計算方法がよいのですが、もしも自分だけさっさと回答送信してしまう人がいるとしたら、Formsを表示したらすぐに各自で回答してもらって、タイムは完了時間から開始時間を引いたものにした方が妥当です。切り替えられるようにしておいた方がいいかもしれません。
Formsの完了時間が秒までしか記録していないので、同率がたくさん出てしまう可能性があります。その場合どうするかも決めておく必要がありそうです。

Power BI部分については、本番までもう少し検討するつもりです。

まとめ

Kahoot! でいいじゃんという意見もあると思います。
そういったサービスを利用することも考えましたが、お金のことを別にしても、手作りでやったことであれこれやりたいことを実現できた部分はあると思います(結果ほぼKahoot!になりましたが)。
また、机上ではなんとなくあーやってこーやったらできるんじゃない? と思っていても、実際手を動かしてみると思い通りに行かないことも多く、やはり作ってみるのは大事だなと改めて感じました。
また、様々な Power Platform の機能や Microsoft365 のことを知ることで、日常のやりたいことが様々な形で実現できるようになるだろうという広がりも感じました。もっと色々やりたい。

最後に、この記事の執筆にあたり、Copilot with Bing Chat が提供する機能を活用しました。Copilotは、私たちの日々の業務を効率化し、生産性を向上させるための優れたツールです。この場を借りて、CopilotおよびCopilotの開発者の方々に深く感謝申し上げます。
(この文章もBing Chatに考えてもらいました)

Power Automate でイベントの日時を適当に登録して世界に思いをはせた話

この記事は、Power Automate Advent Calendar 2023 12月8日に参加しているものです。

qiita.com

日時の取り扱いについては先人の詳しくわかりやすい記事やスライドが沢山あります。それらを見て聞いてすっかり知ったつもりになっていましたが、さて自分でフローを作ってみるとよくわかってなかったので整理してみたよというお話です。

前置 作ったフローと結果

当番を各自のスケジュールに登録するために、SharePoint Lists で作成した当番表から定期的にイベントを登録するフローを作成しました。

当番表リスト

startDateTimeとendDateTimeは計算列で日付と時刻にしています。
※ 日付時刻をカレンダーから選択するのも、「11:00」のように時間の間にコロンを入力するのもあまり好きではないのでこういう形にしています。コロンの入力って面倒ですよね?

ちゃちゃっとフローを作成

わーいできた

こんな感じでシンプルなフローを作って実行してみると、いい感じで登録されました。ちらっと「タイムゾーンの変換」というアクションが頭をよぎりましたが、なんだこれでいいんじゃないかと思っていました。

想定外だったこと

ところがその予定の編集しようとしてみると、時間がUTCになっています。

予定表の編集画面

SharePointの日時がUTCで保存されていることは知っていたのでそりゃそうかとも思いましたが、さっきのフローで日本時間を選んだのはなんだったんだろうと気になります。

試してみた

以下のようにイベントの作成の時刻とタイムゾーンを変えて試してみました。

No. 開始終了時刻 タイムゾーン 予定表の表示時刻 編集画面の表示時刻
01 リストそのまま UTC UTC
02 リストそのまま UTC+09:00 UTC
03 タイムゾーンの変換後の時間 UTC × 9時間遅れ UTC
04 タイムゾーンの変換後の時間 UTC+09:00

予定表の表示
左が日本時間の人(開催者)、右がイギリスに住んでいる人(タイムゾーンUTC)の予定表です。3だけが想定外の時間に予定されてしまっています。
なお、開催者がイギリスに住んでいる人だった場合も、同じ結果になります。

次に、実行結果を見てみました。

アクション 出力された開始時刻
項目の取得 2023-11-28T02:00:00Z
タイムゾーンの変換 2023-11-28T11:00:00.0000000
アクション 入力された開始時刻 start startWithTimeZone
01 2023-11-28T02:00:00Z 2023-11-28T02:00:00.0000000 2023-11-28T02:00:00+00:00
02 2023-11-28T02:00:00Z 2023-11-28T02:00:00.0000000 2023-11-28T02:00:00+00:00
03 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00+00:00
04 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00+09:00

日時表示の末尾の"Z"は、"UTC"だと宣言しています。
SharePoint Listsから取得した日時はゆるぎなくUTCなのですが、タイムゾーンの変換は変換後の日時のタイムゾーンは明示しておらず、「日本時間で言うと9時間プラスだから~」と表示しているだけっぽい感じです。 一方、イベントの開催日時は、"startWithTimeZone"を明示して登録することができます。ただし元の日時が"Z"を付けて「僕は絶対にUTCだ」と言ってきたときには、タイムゾーンを指定してもそのまま登録されるようです。

タイムゾーンの変換とイベントの作成の両方でタイムゾーンの指定をしなきゃらないのか? ですが、UTCになっていてびっくりするのは開催者が予定を編集するときだけなので、お作法通りではありませんが、本人がわかってやっているならあまり気にしなくてもいいのかもしれません。お作法通りではありませんが。

エピローグ

私は狭い世界で暮らしているので、11時集合と言ったら誰もがお昼前に集まるものだと思っていました。ですが、距離を超越できる世界では、「日本時間の11時に集合」もしくは、「標準時の深夜2時に集合」と言わなければならないということになります。
世界中みんながUTCで生活するようにすればこんな混乱はなくなるのかもとも考えてみたのですが、やはりお昼ご飯は12時に食べたいでしょうから、甘んじて受け入れなければなりません。
みんなが小学生の時に気づいていたようなことを今更考えているような気もします。理解の間違っているところがあれば指摘いただけると嬉しいです。

今日の理解を図示したもの

既存のExcelデータをSharePoint Listsにしたい

SharePoint Listsは、新規作成時にExcelcsvからの取り込みができますが、データ型をポチポチと選択するのは面倒ですし、何よりも内部列名が”field_1”になってしまうのが困ります。
また、後からデータを追加したくなったとき、列の順番を目検で揃えてグリッドビューで貼り付けるというのもスマートではありません。 という訳で、上記を解消する方法を今の私のできる範囲で考えたのでメモしておきます。
※2024/02/02 列をcsvで指定する方法を追記しました。

作業の概要

  1. リストを作成する(手作業)
  2. PowerShellで列を追加する
  3. Accessでデータを流し込む

リストを作成する

リストは手作業で作成します。とりあえずタイトル列だけあればよいです。
リスト自体をPowerShellで作れそうな気もしますが、どっちみち確認するのでいいでしょう。

PowerShellで列を追加する

PnP PowerShellを利用します。
PnPはコミュニティが提供しているからか他のPowerShellとはLearnでの情報量などが異なりとっつきにくいです(個人の感想)。 モジュールのインストールなどについてはLearnからGithub記事へのリンクがありますので参照してください。
PnP PowerShell の概要 | Microsoft Learn

まず、サイトに接続します。

$url = 'https://[ドメイン].sharepoint.com/sites/[サイト] 
Connect-PnPOnline -Url $url -Interactive 

次に列を作ります。
PowerShellcsvと相性が良いらしくてリストを別に作って読み込むような処理をよくみるのですが、よくわからないので逐語訳的にコマンドレットを作成しています。列の数がべらぼうに多くなることはあまりないのでとりあえずこれで十分(そのうちわかるようになる予定)。
このコマンド1行で、1つの列ができますので、必要分実行するのが簡単です。

Add-PnPField -List "リスト名" -DisplayName "部門" -InternalName "Department" -Type Text -AddToDefaultView 

CSVファイルで指定する場合は、下記のようなcsvファイルを所定の場所においてやって下記コマンドを実行します。
リストの内容

リストの名称 表示名 内部名 タイプ
testlists 得意先名 Customer_Name Text

コマンド

# CSVファイルを読み込む
$data = Import-Csv -Path "C:\temp\lists.csv"

# 各行の値を取得して処理する
foreach($row in $data) {Add-PnPField -List $row.リストの名称 -DisplayName $row.表示名 -InternalName $row.内部名 -Type $row.タイプ -AddToDefaultView}

データ型

  • Text 文字列
  • Note 複数行テキスト
  • Datetime 日時
  • Boolean
  • Choice
  • File
  • Integer
  • Lookup
  • MultiChoice
  • Number
  • URL
  • User

また、内部列名は下記の場合置き換えられますので注意。他にもあるかも。

  • / → x002f
  • 先頭が数字の場合、その前に_x003 が付与される

Accessでデータを流し込む

Accessで、外部データ>オンラインデータ から先ほど作ったSharePoint Listsを指定してリンクテーブルを作成。
元のExcelデータもAccessにインポートして、データの追加クエリでExcelデータをSharePoint Listsに追加してやれば完了です。
追加クエリは、列名が同じであれば自動的によきに計らってくれるのが便利ですね。
Powser Automateを使おうと思ったら、「こっちのこの列はここに入れますよ」というのをポチポチ設定しないといけないのが面倒でした。何か楽な方法がありそうな気もするけど。

選択肢列は手作業でやっていますが、これもコマンドでできるかも。
業務的に事務仕事をすることが減って、Accessを使うことなんてもうないのかもと思っていましたが使える武器は使って便利に楽にお仕事したいです。

PnP PowerShell を初めて使ってみた記事を、まるさんが書いてくださっています。通り過ぎると忘れてしまう躓きポイントが書かれていて参考になります。

note.com

問合せアプリで、「自分以外の人にも連絡ほしい」に対応した

Power Apps で、簡易的な問合せ受付アプリを作成して運用しています。
依頼内容に対する連絡先に入力した人以外も含めて欲しいという要望があり、やっと対応できたのでメモを残しておきます。思ったより紆余曲折ありました。

「連絡先」として複数ユーザーの列を作成する

SharePoint Listsに「連絡先」列を追加し、複数ユーザーの選択を可にします。
アプリのEdit画面にも追加しておきます。

アプリの「連絡先」のデフォルトを設定する

「連絡先」の DefaultSelectedItems に下記の内容を設定します。

 {
  Claims: "i:0#.f|membership|" & Lower(User().Email),
  Email: User().Email,
  DisplayName: User().FullName
}   

こちらの記事を参考にさせていただきました。ありがとうございます。
Power Apps で SharePoint のユーザーとグループ列に既定値を設定する方法 - Office 365 の豆知識

私の環境では Claims と Emailとは違うのですが、欲しい内容は取れているようなのでとりあえず良しとします。

連絡先に入っているユーザーのメールアドレスを別欄に取り出す(フロー)。

元々アプリには「自分が登録した依頼」が表示される画面を作っていました。
登録者をログインユーザーのEmailでFilterしたコレクションがあるので、ちょっと条件を変えたらいけるかと思ったのですがうまくいきません。ユーザー列はリストの中にリストが入っているようなイメージなので、私の力量で Power Apps 上で実現するのは難しそうだなと早々に路線を変更し、SharePoint Lists に新しい項目が追加されたときに連絡先列のユーザー情報から Email 部分を取り出して別の列に登録するよう、Power Automateでフローを作成しました。

益森さんの記事を参考にさせていただきました。 ありがとうございます。
(そもそもこの記事を拝見したので、今回の変更が実現できました。)
SharePoint リストのユーザー列 (複数選択を許可) を使って、Power Automate でメール通知する - Qiita

フローはこちら。

SharePoint Listsに OtherEmail という1行テキストの列を作成して、そこに「連絡先(OtherMember)」に入っているユーザーの Emailを格納します。
ですがここで問題が。Power Appsで User().Email としたときの結果は UPN になるのですが、Power Automateで @{item()?['Email']} と指定すると、メールアドレスが返ってきます(それで最初の連絡先のデフォルトが User().Email でうまくいったのかもしれません)。
なので、「選択」では @{item()?['Claiml']} と指定しました。
007@xxx.jp がUPN、James.Bond@xxx.jp が Email です。

そうするとこんな感じで返ってきます。

[
  "i:0#.f|membership|007@xxx.jp",
  "i:0#.f|membership|009@xxx.jp"
]

次の「結合」ではそのまま「,(カンマ)」で区切って結合。

最後に「作成」で、余分なところをReplaceしてやります。

replace(body('結合'),'i:0#.f|membership|','')

自分が連絡先に入っている依頼を抽出する

「依頼履歴を見る」ボタンのOnSelectを以下のように書き換えます。

ClearCollect(colstatus,Filter(irailists,User().Email in otherEmail));
Navigate(ReviewScreen,ScreenTransition.None)

ログインユーザーのEmailが otherEmail に含まれるものを抽出します。委任の警告が出ますがとりあえず無視します。現在の問合せ数でいけば委任の問題が発現するまで数年かかるはずですので、それまでには何かしらの方法で解決しているでしょう。

連絡先のユーザーとチャットするボタンを設置

管理者用の詳細画面に、「依頼者とのチャットを開く」ボタンを設置しました。
ボタンの OnSelectに下記のように記載します。

Launch("https://teams.microsoft.com/l/chat/0/0","users", DataCardValue1 ,"topicName","依頼受付","message",DataCardValue2)

DataCardValue1 は、otherEmail、DataCardValue2 は受けた依頼のタイトルや番号などを入れています。
このボタンを押すと連絡先のユーザーとのグループチャットが開くので、問合せ内容に不明点があった場合など楽ちんです。

管理者用のボタンを設置する

上記の管理者用詳細画面は、特定の人だけが表示されるボタンから入れるようにしています。
こちらの記事を参考にさせていただきました。ありがとうございます。

【小ネタ】PowerAppsでログインユーザーにより表示/非表示を切り替えるボタンを配置する - Qiita

まとめ

今回も先人たちのおかげで業務改善が捗りました。感謝しています。
依頼者個人ではなく複数の人に対応結果を知らせて欲しいという要望は、割とあるんじゃないでしょうか。
結果としては意外と簡単なちょこちょこで解決できましたが、ちょこちょこでもいくつかあると途中でつまづいたっきり8割の出来で放置…というのはもったいないですよね。解決できて嬉しいです。

Microsoft Viva の自分用メモ

Microsoft Viva の機能。もりもり増えて何が何だかわからなくなっているので自分用にメモしておく。Viva 〇〇って何だっけ? Microsoft365ライセンス内で使えるんだっけ?

Viva Connections

[つながり]
SharePointハブサイトのニュースやツール類を、各役割の人々に合わせたダッシュボードとしてTeamsなどから利用できるようにする。
💰M365で利用可能。

Viva Engage

[つながり]
旧Yammer。社内SNS
💰M365に一部含まれる:SNS機能/含まれない:エキスパートに質問、組織全体のキャンペーン等

Viva Insights

[分析情報] 従業員エクスペリエンス向上のための推奨機能や分析などを行う。今日の気分の記録やバーチャル通勤、業務時間外の仕事状況の分析等を表示する。
💰M365に一部含まれる:Teams、Outlookでの利用、ブリーフィングメール/含まれない:高度な分析、マネージャー向け機能

Viva Topics

[成長]
AIが全社のコンテンツ・専門知識を自動的に整理してくれる。
💰別途ライセンス要

Answers in Microsoft Viva

Viva トピックや Viva エンゲージと連携し、エキスパートを特定して自身の知識を共有するように促し、ゲーミフィケーションによってナレッジ ベースの作成に貢献したユーザーに報酬を与えます。

Viva Learning

[成長]
組織でラーニングを共有する。
💰M365に一部含まれる:MS Learn、LinkedIn Learning、組織が作成したコンテンツ/含まれない:完了状況の追跡、学習予定の提案等

Viva Goals

[目的]
OKR管理ソリューション。
💰別途ライセンス要

Viva Sales

[役割に基づくエクスペリエンス]
M365、TeamsとCRMシステムを連携して、顧客管理、データ入力、メモ作成等を自動化する。
💰別途ライセンス要

ここから下はとりあえず情報だけ。

Viiva Pulse

マネージャーやチーム リーダーは仕事の流れの中で Teams から直接、チームのエクスペリエンスについて定期的に内密のフィードバックを収集することができます。

Viva Amplify

コミュニケーションプロセスを1か所に集約し、経営幹部や人事などのメッセージが従業員に響くようにする。複数チャネルに同時発信等。キャンペーンを一元管理して今後のコミュニケーション改善に役立てることができる。

Microsoft Places

Vivaとはついていないですが。オフィスを行く価値のあるものにする。

Microsoft Places をご紹介します: 空間を場所に変える

参考

従業員エクスペリエンスとエンゲージメント | Microsoft Viva

従業員エクスペリエンス プラットフォームのプランと価格 | Microsoft Viva

2022年9月に発表された内容の抄訳ブログ blogs.windows.com