くらっちのクラウド日記

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

【PowerShell】ps1ファイル内で iniファイル を読み込む

・はじめに

PowerShell を実行する場合、例えばスクリプトに設定する条件などを利用時に実行者自身で設定してほしい。という事があると思います。

しかし、ユーザーがps1ファイルを編集するのは、誤って不必要な部分を編集してしまうなどのリスクがあるため、あまり操作はさせたくありません。
ユーザーに編集させたい部分は切り出して iniファイルにまとめて、ps1ファイルは編集させないようにするのが安全です。

今回は、ps1ファイル実行時にiniファイルを読み込み、その値を利用する方法を紹介します。

・目次

・フォルダー構成

今回紹介するのは、ps1ファイルと同じフォルダー内に格納されたiniファイルを読み込む方法です。
下図内のフォルダーには、本記事内の「iniファイル 書き方 例」と「ps1ファイル 書き方 例」のコマンドを記載したファイルを格納しています。

f:id:kurakurattyo:20211207002517p:plain

・iniファイル 書き方 例

#変数名=代入値
rolename=Grobal Administrator
startdate=2021/12/07 15:30:00
activity=Add user,Add group

※「=」の前後にスペースは入れないようにします
※文字列記載の際に””(ダブルクォーテーション)で囲わないようにします
※「””」で囲わなくても、半角スペースなどは文字列として扱われます。
※「,」も文字列の1文字として扱われます。

PowerShell 書き方 例

#注1
$INI_PATH = @(Split-Path $script:myInvocation.MyCommand.Path -Parent).Trim()
$INI_FILE = "Sample.ini"
$INI_FULLNAME = $INI_PATH + "\" + $INI_FILE

#注2
$PARAMETER = @{}
Get-Content $INI_FULLNAME | %{$PARAMETER += ConvertFrom-StringData $_}

#注3
$Role = $PARAMETER.rolename
$Start = $PARAMETER.startdate
$Action = $PARAMETER.activity

#結果出力のため
$Role
$Start
$Action

注1について
「Split-Path $script:myInvocation.MyCommand.Path -Parent」では、スクリプトを実行している場所のパスを取得します。
その後、同フォルダ内のiniファイルのパスを作成します。

注2について
$PARAMETER を配列として利用するために宣言しました。
$INI_FULLNAME (iniファイル)から取得した全ての変数を PARAMETER 配列に入れていきます。

注3について
PARAMETER 配列に格納された値を PowerShell の変数に代入します。
$PARAMETER.rolename のように、「配列名. iniファイルの変数名」を指定することで、取得した値を利用することができます。

PowerShell を起動して ps1ファイルを実行してみると、問題なくiniファイルで設定した値を取得することができていました。 f:id:kurakurattyo:20211208113303p:plain

【PowerApps】PowerApps から添付ファイル付きのメールを送信する方法

・はじめに

こんにちは、くらっちです。
PowerAppsで添付ファイル付きのメールを送信する方法を説明します。
PowerApps でテキストだけのメールは送信できるけど、添付ファイル付けて送信するにはどうしたらいいんだ!!という場合に、是非参考にして頂けたらと思います。

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

・目次

・必要なコネクタ

今回添付ファイル付きのメールを送るために必要なコネクタは下記の2つです。

  • Office365Outlook コネクタ
  • SharePoint コネクタ
    ※データソースとして追加するのはカスタムリスト 必須ですが、新規作成したばかりのリストで大丈夫です。

・メール送信するための事前準備

メールを送るために必要な「宛先」「件名」「本文」を記載するテキストボックスと、「送信」ボタンを用意します。

この記事ではメール送信に使用する各パーツ名を下記のように定義しました。
宛先:ToTextBox
件名:SubjectTextBox
本文:BodyTextBox

送信ボタンの処理は後ほど設定するため、今は各パーツの配置のみでOKです!

f:id:kurakurattyo:20211116224258p:plain:w650

SharePoint から「添付ファイル」列をコピーする

添付ファイルを送信するには、ファイルを添付するための列(フィールド)が必要です。
しかし、PowerApps にはそんな便利機能は現時点で実装されておりません。

ご存知の方も多いと思いますが、SharePointのカスタムリストには添付ファイルを登録するための列が存在しています。
そうです、裏技で カスタムリストの添付ファイル列 を利用してメールを添付します!!

[挿入] > [フォーム] > (フォーム内)[編集] > (データソース)[なし] > [SharePointコネクタ] をクリックします。

f:id:kurakurattyo:20211116232742p:plain

Formにフィールドが複数追加されるので、「添付ファイル_DataCard」内の「DataCardValue」をコピーし空きスペースに貼り付けます。

f:id:kurakurattyo:20211116232844p:plain

添付ファイルのDataCardValueを空いたスペースに貼り付けたら、Formは不要なので削除します。

f:id:kurakurattyo:20211116233033p:plain

コピーしたDataCardValueにエラーが発生しているので下表の通りに修正します。

プロパティ名 修正前 修正後
Items Parent.Default (空白)
Tooltip Parent.DisplayName ""
DisplayMode Parent.DisplayMode DisplayMode.Edit
BorderColor If(IsBlank(Parent.Error), Parent.BorderColor, Color.Red) Black


添付ファイルのDataCardValueがコピーできたら、SharePointコネクタは不要になるので、削除します。

f:id:kurakurattyo:20211116234333p:plain:w400

・送信ボタンにメール送信処理を追加する

ここまでで、画面の準備は整いました。
後は、添付ファイルをどうやってメール送信するか、です。

今回は、Office365Outlookコネクタの「Office365Outlook.SendEmailV2」を利用してメールを送信します。
Office365Outlook.SendEmailV2の構文は下図の通りです。

f:id:kurakurattyo:20211116234550p:plain

送信ボタンのOnSelectに下記コードを入力します。
※ToTextBox、SubjectTextBox、BodyTextBox、DataCardValue12_1は用意したパーツ名に合わせて変更してください。

Office365Outlook.SendEmailV2(
  ToTextBox.Text,
  SubjectTextBox.Text,
  BodyTextBox.Text,
  { Attachments: AddColumns(
    RenameColumns( DataCardValue12_1.Attachments ,"Value","ContentBytes"),
    "@odata.type",""
  )}
)

・実行してみる

各項目入力し添付ファイルを付けて送信してみると。。。
f:id:kurakurattyo:20211116234738p:plain:w570

送信結果
添付ファイル付きのメールが送信できました!!
f:id:kurakurattyo:20211116234850p:plain:w570

・ちょっとだけ解説

送信ボタンのOnSelectに設定したソースコードについて解説します。

コード中のAttachments:で添付ファイルの情報を扱います。
Attachmentsが扱えるのはTable値です。
下記リンク先を確認すると、Attachements で必要なレコードは3つ。
 参考:ファイルが添付されたメッセージを送信する

  • Name
  • ContentBytes
  • @odata.type

しかし、SharePoint リストからコピーした添付ファイル列の「DataCardValue12_1.Attachments」には Name と Value しかありません。
f:id:kurakurattyo:20211116235003p:plain:w430

このままでは添付ファイルを送ることはできないので、Addcolumns と RenameColumns を利用してレコード「Value」を「ContentBytes」に修正し、「@odata.type」を追加します。

下図の通り必要なレコードが準備できました。これで添付ファイルを送信できます。
f:id:kurakurattyo:20211116235110p:plain

【PowerApps】重複なしでデータソースをランダム表示させる Shuffle関数

・はじめに

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

今回紹介するのは、PowerApps 開発で利用できる関数の「Shuffle 関数」です。
例えば、1~10まで並ぶデータを重複なくランダムに表示させたい場合などに便利です。

Shuffle関数
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/function-shuffle

PowerApps 業務用アプリで、データをランダム表示する要件は稀だと思いますが、ゲームアプリで利用できる場面は多いと思います。
初めて使ったときはその便利さにすごく感動したのでぜひ使っていただきたいオススメの関数です。笑

・目次

・実現できる事

今回紹介する方法は、下記の要件を満たしたい場合に有効です。
・データソースのレコードをランダムに表示したい。
・表示するレコードは重複させたくない。

・Shuffle関数の使い方

Shuffle関数の構文は以下の通りです。

Shuffle('テーブル名')

・利用例1(並び替えの結果をテーブル単位で表示する)

説明用に下図のPowerApps アプリを用意しました。
SharePoint リストを、ボタンクリックでランダムに並び替えて別のギャラリーに表示します。

名称 用途
BeforeGarally SharePoint リストをそのまま表示したギャラリー
RandBtn クリック時に並び替えを実施して、コレクションに保存
AfterGarally 並び替え後のコレクションを表示したギャラリー

f:id:kurakurattyo:20211111232721p:plain


例では RandBtn をクリックすることで、BeforeGarally のデータをランダムに並び替えて AfterGarally に表示しています。
RandBtn の OnSelected に ClearCollect を入力します。

ClearCollect(temp,Shuffle('テーブル名'));


コレクション「temp」に並び替え後のデータが登録されます。
今回の例では テーブル名に BeforeGarally.AllItems を入力していますが、SharePointリストに置き換えてもOKです。
AfterGarally の Items に temp を指定すると、BeforeGarally.AllItems をランダムに並び替えた値が表示されます。

f:id:kurakurattyo:20211111232122p:plain


実行結果はこの通り。ボタンを押すたびに実行結果が変わりデータも重複していません。

f:id:kurakurattyo:20211111234724g:plain

・利用例2(並び替えの結果をレコード単位で表示する)

説明用に下図の PowerApps アプリを用意しました。
SharePoint リストをボタンクリックでランダムに並び替えて、ラベルの表示をすべて変更します。

名称 用途
BeforeGarally SharePoint リストをそのまま表示したギャラリー
RandBtn クリック時に並び替えを実施して、コレクションに保存
AfterLabel1 ~ 5 並び替え後のコレクションを表示するラベル

f:id:kurakurattyo:20211111233018p:plain


利用例1同様に、RandBtn をクリックすることで、BeforeGarally のデータをランダムに並び替えて AfterLabel1 ~ 5 に表示しています。
RandBtn の OnSelected に ClearCollect を入力します。

ClearCollect(temp,Shuffle('テーブル名'));


コレクション「temp」に並び替え後のデータが登録されます。
各ラベルに並べ替え後の値を表示させるために、AfterLabel1 ~ 5 の Text に下記例のように入力することで N 番目のレコード が取得できます。

下記例では、
 「FirstN(temp,2)」 で temp 内 1 ~ 2 番目までの 2 レコードを取得して、
 「Last( ).タイトル」で取得した 2 レコードのうち 最後( 2 レコード目)のタイトル列を取得しています。

例:AfterLabel2 に「temp」内、2レコード目のタイトルを表示する
 Last(FirstN(temp,2)).タイトル


AfterLabel1 ~ 5 を上記のように設定すると、結果このようになります。

f:id:kurakurattyo:20211111234629g:plain


以上です。
楽しい PowerApps アプリ作成の一助となれば幸いです。

最後に、以前筆者は Shuffle関数を利用してこんなアプリを作りました。

【SSO】AzureADとSalesforceのSSO連携手順 実践編

・はじめに

「SSO(シングルサインオン)って使ったことあるけど、自分で構築したことないな。」 と唐突に思い、試しに AzureAD と Salesforce を連携させました。
下記 Docs を参考にしつつ、MS の推奨に従って構築を行いました。

参考Docs ↓
Azure Active Directory シングル サインオン (SSO) と Salesforce の統合
Salesforce を構成し、自動ユーザー プロビジョニングに対応させる


この記事の手順を実施することで、AzureADに登録されているアカウント、パスワードでSalesforce にサインインできるようになります。

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

・目次

  • Azure と Salesforce の SSO 連携の特徴
  • SSO構築の前提条件
  • 実施環境
  • シングルサインオン構成手順
     -- 【Salesforce】 必要情報の取得
     -- 【AzureAD】 アプリケーションの作成
     -- 【AzureAD】SSO SAML構成
     -- 【Salesforce】SSO SAML構成
     -- 【SalesforceSAML有効化
  • 自動ユーザープロビジョニングを有効にする手順
     -- 【Salesforce】 セキュリティトークンを取得する
     -- 【AzureAD】 自動ユーザープロビジョニングを構成する
  • AzureAD Salesforce プロビジョニング対象について
  • 参考URL

・Azure と Salesforce の SSO 連携の特徴

以下、Docs から抜粋。

 - Salesforce は、SP Initiated SSO をサポート。
 - Salesforce は、自動化された ユーザープロビジョニングとプロビジョニング解除 (推奨) をサポート。
 - Salesforce は、JIT ユーザープロビジョニングをサポート。

・SSO構築の前提条件

SSO 構築には最低限下記のサブスクリプションが必要です。
AzureAD : AzureAD サブスクリプション。 ※無料アカウントでもOK。
Salesforce : SSO が有効な Salesforceサブスクリプション。 ※ 無料の開発者環境 でもOK。

Salesforce.com の試用アカウントの場合は必要な API にアクセスできず、自動化されたユーザープロビジョニングを構成できません。
必ず無料の開発者アカウント、もしくは、有料アカウントを使用します。

・実施環境

本記事に記載の操作は、下記条件の環境で実施しました。

利用ブラウザ
 - Microsoft Chromium Edge ※InPrivateウィンドウは利用しないこと。

AzureAD :
 - Microsoft365 Business Basic ライセンスを保持する アカウント を使用
 - ユーザーは M365 グローバル管理者 権限 を保持していること
 - AzureAD Free 利用
 - ドメイン ⇒ 初期のまま(@aaaa.onmicrosoft.com)

Salesforce :
 - Salesforce の システム管理者 権限を保持していること
 - 無料の開発者 環境を利用
 - ドメイン ⇒ 初期のまま(bbbb-dev-ed.my.salesforce.com)

シングルサインオン構成手順

Salesforce】 必要情報の取得

1.Salesforce のシステム管理者アカウントで、Salesforce にログインする。
2.右上歯車マーク > 設定 をクリック。
3.左側メニューから「設定」>「会社の設定」>「私のドメイン」をクリック。
4.「現在の[私のドメイン]のURL」に表示されているドメインをメモしておく。

f:id:kurakurattyo:20211109223842p:plain

【AzureAD】 アプリケーションの作成

5.グローバル管理者権限を持つアカウントで Azure にログインする。
6.AzureAD を選択 > 左側メニューから「エンタープライズアプリケーション」をクリック。
7.「+ 新しいアプリケーション」をクリック。
8.「Salesforce」を検索ボックスに入力して検索結果から「Salesforce」を選択する。
9.アプリケーションの名前を決めて、「作成」ボタンをクリック。
10.アプリケーションが作成されたことを確認する。

【AzureAD】SSO SAML構成

11.作成したアプリケーションをクリック、左側メニューから「シングルサインオン」をクリック。
12.「SAML」をクリックする。

f:id:kurakurattyo:20211109223926p:plain


13.「基本的な SAML 構成」>「編集」をクリックする。
14.「識別子(エンティティID)」「応答URL」「サインオンURL」に Salesforce からコピーしたドメインを入力する。
※開発者環境の場合「https:// xxx-dev-ed.my.salesforce.com 」の形。
※入力値は全て同じでOK。

f:id:kurakurattyo:20211109224014p:plain


15.「保存」する。
16.「SAML名証明書」>「編集」をクリック。
17.「署名オプション」を「SAML 応答とアサーションへの署名」に変更して「保存」する。

f:id:kurakurattyo:20211109224757p:plain


18.「SAML名証明書」画面が閉じたら、「拡張機能のインストール」をクリック。
19.ブラウザ(Edge)にアドオンのインストールを行う。
  「Chrome ウェブストア」が表示されたら「他のストアからの拡張機能を許可する」をクリック。
20.「Chromeに追加」ボタンが表示されたら、クリック。
21.「Microsoft Edge に追加しますか?」メッセージが表示されたら「拡張機能の追加」をクリック。
アドオンが追加されると、Edgeに下図赤枠内のアイコンが表示されるようになります。

f:id:kurakurattyo:20211109224933p:plain


22.AzureADに戻ると「○○のセットアップ」ボタンが活性化されているのでクリック。

f:id:kurakurattyo:20211109225118p:plain


23.フェデレーション xmlファイルのダウンロードが開始される。
  xmlファイルのダウンロードが完了したら「OK」をクリック。

f:id:kurakurattyo:20211109225157p:plain

Salesforce】SSO SAML構成

24.手順23の後、Salesforce のログイン画面に遷移するので、Salesforce のシステム管理者アカウントでログインする。
25.ログイン後に「Setup Single Sign On」画面が表示されたら「Yes」をクリック。
26.「Upload SAML signing certificate」画面が表示されたら「Yes」をクリック。
※25、26 は表示されない、または、日本語の可能性もあります。

27.手順23でダウンロードしたフェデレーションxmlファイル を選択して、アップロードする。

f:id:kurakurattyo:20211109225640p:plain


28.「作成」をクリック。
29.下図画面が表示されたら「Yes」をクリック。

f:id:kurakurattyo:20211109225819p:plain


30.「SAML シングルサインオン構成」画面では、「SAML ID 種別」が「アサーションには、ユーザの Salesforce ユーザ名が含まれます」であることを確認して「保存」をクリック。

f:id:kurakurattyo:20211109225955p:plain

SalesforceSAML有効化

31.手順30の後、「設定」>「ID」>「シングルサインオン設定」で「編集」をクリック。
32.「SAML を有効化」にチェックを入れて保存する。

f:id:kurakurattyo:20211109230047p:plain


33.「設定」>「会社の設定」>「私のドメイン」>「認証設定」に移動する。
34.「認証サービス」にある「ログインフォーム」と 有効化したSSO にチェックを入れて保存する。

f:id:kurakurattyo:20211109230317p:plain

・自動ユーザープロビジョニングを有効にする手順

上記までで、シングルサインオンの構成は完了しました。
次に AzureAD に登録されているアカウントを、自動的に Salesforce で利用できるようにしていきます。

Salesforce】 セキュリティトークンを取得する

Azure AD で自動ユーザープロビジョニングを構成する際に、Salesforce のセキュリティトークンが必要になるため事前に取得します。

35.システム管理者アカウントで Salesforce にサインインする。
36.画面右上の自分のアイコン >「設定」をクリック。

f:id:kurakurattyo:20211109230615p:plain


37.「私の個人情報」>「私のセキュリティトークンのリセット」>「 セキュリティトークンのリセット 」をクリック。

f:id:kurakurattyo:20211109230712p:plain


38.Salesforce に登録しているメールアドレスに セキュリティトークン が送信されるので、確認してコピーする。

f:id:kurakurattyo:20211109230814p:plain

【AzureAD】 自動ユーザープロビジョニングを構成する

39.Azure側に戻り、SSO を構成したSalesfroce のアプリケーションを選択する。
40.左側メニューから「プロビジョニング」を選択して、「作業の開始」をクリック。
41.「プロビジョニング モード」を「 自動 」に変更する。
42.「管理者資格情報」に次の構成設定を指定する。
 管理者ユーザー名:システム管理者権限を持つ Salesforce アカウント名
 管理者パスワード:システム管理者権限を持つ Salesforce アカウントのパスワード
 セキュリティトークン:手順38で取得したセキュリティトーク
 テナント URL:(省略)

f:id:kurakurattyo:20211109230901p:plain


43. [テスト接続] をクリックして Azure AD が Salesforce アプリに接続できることを確認する。
44.「保存」をクリック。
45.同画面内の「設定」セクションにある「プロビジョニング」をオンにして保存する。
※保存ができない場合は、しばらく時間をおいてから再度実施してみてください。

これで、プロビジョニングが完了です。
長らくお疲れ様でした。

AzureAD Salesforce プロビジョニング対象について

自動プロビジョニングを構成すると 既定で、 AzureAD に登録されている全ユーザーが Salesforce とのマッピング対象となります。
ただし、AzureAD Free プランの場合、グループはマッピング対象にすることができません

AzureAD と Salesforceマッピング定義は、「プロビジョニング」>「編集」>「マッピング」でマッピングの対象範囲、マッピングする属性値などを編集・確認が可能です。

同期処理は、約 40 分ごとに実行され、[ユーザーとグループ] セクションで SSO が有効になっているユーザーを確認できます。

image.png

・参考URL

Azure Active Directory シングル サインオン (SSO) と Salesforce の統合
Salesforce を構成し、自動ユーザー プロビジョニングに対応させる
SalesforceをAzureADでSSOする構成にしてみた
シングルサインオン 実装ガイド SAML シングルサインオンを使用するサービスプロバイダとして Salesforce を設定

【PowerApps】一定時間経過で自動的にページ遷移する方法

・はじめに

こんにちは、くらっちです。
今回は、タイマーを利用して「一定時間経過したら自動的にページ遷移する方法」です。

「一定時間同じ画面を表示したままの場合、TOPの画面に戻る」場合などに有効です。
ちょっとしたアイデアとして参考にして頂ければと思います。

イメージとしてはこんな感じ。

f:id:kurakurattyo:20211104230313g:plain

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

・構成要素

今回作成したサンプルは、画面が表示されてから5秒後にTOP画面に遷移します。
使っているパーツは下表の通りで、自動的なページ遷移に必要なのは「タイマー」のみです。

挿入パーツ 名前 備考
タイマー Timer 必須
ラベル Sample_Label 説明用のラベル(処理には不要)

・実装方法

1.遷移元のページにタイマーを追加

遷移元のページ(SampleScreen)にタイマーを追加します。

f:id:kurakurattyo:20211104233228p:plain

2.タイマーの詳細設定を変更

タイマーの詳細設定を変更することで、
 「画面表示直後、タイマー起動」>「5秒カウントアップ」>「タイマー終了後 TopScreen に移動」
の処理が実施されるようになります。

変更する値 変更前 変更後
OnTimeEnd false Navigate(TopScreen,ScreenTransition.None)
Duration 60000 5000
AutoStart false true

これで完成です。
タイマーを追加して上記3箇所を変更するだけ。笑
すごい簡単。

※ページ遷移までの時間を変更したい場合は「Duration」を修正します。

【PowerAutomate】Yammer で新規投稿(質問)された時のみ Teams に通知する

・はじめに

こんにちは、くらっちです。
今回は、PowerAutomate の使い方として、Yammer との連携方法の一例を書きました。

突然ですが、Yammerには「質問」機能が用意されているのをご存知ですか?

「質問」機能では、質問に対して「返信コメント」「いいね」「ベストアンサー」などの様々なアクションが用意されていて、FAQがしやすく、ナレッジ蓄積としても利用できたり、質問にトピックを追加して分類化することもできます。

個人的には質問に対するベストアンサーが分かるってすごく嬉しいです。

f:id:kurakurattyo:20211103234831p:plain

もし、PowerAutomate と組み合わせて「Yammer に新しい質問が投稿されたら、Teams チャネルに通知する」ことができたら、更にいい感じだと思いませんか?

PowerAutomate には Yammer のトリガーに「グループに新しいメッセージがある場合」というのがあります。
これは「新規投稿時」と「返信投稿時」がトリガーとなります。

今回は、返信投稿時は Teams チャネルに通知させず、「Yammerの質問機能で新規投稿がある場合のみ通知する」ということを実装してみましょう。

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

・目次

  • 実装結果
  • 実装方法
     -> トリガー
      -> 1.グループに新しいメッセージがある場合
     -> アクション
      -> 2.ユーザー詳細を取得する
      -> 3.条件
      -> 4.Teams チャネルにメッセージを投稿する
  • 処理結果
  • 補足 --質問機能以外の message_type --

・実装結果

PowerAutomateの完成形はこんな感じです。 すごくシンプル。

f:id:kurakurattyo:20211103225314p:plain

・実装方法

トリガーと各アクションについて説明します。

トリガー

1.グループに新しいメッセージがある場合

トリガーとする Yammer のグループを選択します。
今回は「技術相談 M365 相談箱」グループから新規投稿があった場合を想定しています。

image.png

アクション

2.ユーザー詳細を取得する

トリガーで使用した「グループに新しいメッセージがある場合」からは、投稿者の名前などを取得することができません。
そのため、Yammer の「ユーザー詳細を取得する」アクションで投稿者名などを取得して Teams メッセ―ジ送信時に利用できるようにします。

Yammer のアクションから「ユーザー詳細を取得する」を追加して、トリガーから「メッセージ 送信者」を選択して入力します。

f:id:kurakurattyo:20211103230639p:plain

3.条件

今回のフローで一番重要、というか、重要なのココしかありません。
条件アクションで「質問機能から新規投稿があったかどうか」を判断します。

トリガー「グループに新しいメッセージがある場合」の出力結果は JSON 形式です。
下記はサンプルの出力結果から一部抜粋しました。

{"id":1234567890123456,
"sender_id":987654321098,
"created_at":"2021/05/31 13:23:11 +0000",
"network_id":7777777777,
"message_type":"question",
"sender_type":"user",
"url":"https://www.yammer.com/api/v1/messages/1234567890123456",
"web_url":"https://www.yammer.com/funkitdev01.onmicrosoft.com/messages/1234567890123456",
"group_id":55555555555,
"body":{
"parsed":"新しい質問をしました。",
"plain":"新しい質問をしました。",
"rich":"新しい質問をしました。"},
"thread_id":1234567890123456,
"client_type":"The new Yammer", 
"...略"

上記のうち、今回必要となるのは「message_type」です。
「message_type = question」の場合に、「質問機能から新規投稿が行われた」ことを示します。

そのため、条件アクションには以下のように設定します。

「(トリガーの)メッセージ 種類」 「次の値に等しい」 「question」

image.png

結果「はい」の場合は、Teams チャネルにメッセージを送信します。
「いいえ」の場合は、「終了」アクション、あるいは、返信投稿時の処理をするのが良いでしょう。

4.Teams チャネルにメッセージを投稿する

「message_type」=「quesion」の場合、Teams チャネルにメッセージを送信させるためのTeams アクションを「はいの場合」に追加します。

これでフローは完成です。

・処理結果

通知内容はとてもシンプルにしていますが、こんな感じのメッセージがチャネルに送信されます。

f:id:kurakurattyo:20211103234626p:plain

・補足 --質問機能以外の message_type --

Yammer の質問機能以外からメッセージを送信した時の message_type は、それぞれ下記の通り。
 返信メッセージの場合、「update」
 ディレクションタブに新規投稿の場合、「update」
 賞賛タブに新規投稿の場合、「update」
 投票タブに新規投稿の場合、「poll」
 ※いいね、ベストアンサーなどのアクションの場合は、トリガーは発動しない。

【PowerApps】プッシュ通知をスマホに送信しよう

・はじめに

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

今回は、スマホにインストールした Power Apps からプッシュ通知を表示する方法です。

具体的には、PowerAutomate のフローに 特定のアクションを追加して、フローに紐づけられた PowerApps アプリに向けて通知を飛ばす、というものになります。
表示された通知をクリックすると自動的に対象の Power Apps アプリが起動します。

例えば、経費申請や休暇申請などの承認依頼があって、承認の応答を Power Apps で実施する場合にプッシュ通知で知らせることができると気づきやすくなると思います。

f:id:kurakurattyo:20211101230259p:plain

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

・事前準備

1.Push通知クリック時に起動する PowerApps アプリが存在すること。
2.スマホに PowerApps がインストールされていること。

・実装方法

Power AppsのアプリIDを取得する

プッシュ通知を表示させるには、PowerApps アプリを識別する アプリID が必要です。
このアプリIDを PowerAutomate のフローに登録することで通知を送信します。

1.Power Apps のアプリ一覧を表示し、対象アプリの「…」 > 「詳細」をクリックする。
f:id:kurakurattyo:20211028000505p:plain

2.「詳細」画面にある「アプリID」をテキストエディタなどに保存する。 f:id:kurakurattyo:20211028001519p:plain

新しい接続を作成する

3.Power Apps を開き、左側メニュー内の「Dataverse」>「接続」をクリックする。
4.画面上部の「+新しい接続」をクリックする。
5.一覧から「Power Apps Notification」の + をクリックする。
6.「Power Apps の通知」画面で「対象アプリケーション」に、2で取得したアプリIDを入力して作成する。
f:id:kurakurattyo:20211029002141p:plain

7.元の画面に戻ると、今作成した接続「Power Apps Notification」が一番下に追加されているので、「…」>「編集」をクリックする。
f:id:kurakurattyo:20211029001622p:plain

8.「表示名」に任意の通知名を付けて保存する。
今後、このアプリ専用の通知として判別しやすい名前を付けます。
f:id:kurakurattyo:20211029002017p:plain

Power Automateに通知処理を追加する

プッシュ通知を出すためにPower Automateのフローにアクションを追加します。

9.PowerAutomate を開いて、フローのPush通知を送りたいタイミングの場所に 「Power Apps notification(プレビュー)」 を追加します。
f:id:kurakurattyo:20211031002557p:plain

10.下表を参考に各項目に値を入力します。
11.各項目入力後、「…」> マイコネクション > 8.で名付けした通知を選択してフローを保存します。

項目名 説明 入力する値
受信者 通知の受信者 受信者のメールアドレス
メッセージ 通知に表示するメッセージ 文字列
アプリを開く 通知タップ時にアプリ起動するか はい / いいえ
パラメーター - 未入力でもOK


f:id:kurakurattyo:20211031003049p:plain

データソースの追加

12.Power Appsアプリの編集画面で、左側メニューから「データソース」のアイコンをクリックする。
13.「データの追加」>「コネクタ」>「Power Apps Notification」> 今回作成した「Power Apps Notification」を選択する。
f:id:kurakurattyo:20211101223438p:plain

15.「データソース」に「Power Apps Notification」が追加されたことを確認する。
通知の名前が今回作成したものであることを確認してください。

最後に、PowerAutomate のフローが起動して「Power Apps Notification」が処理されれば、対象ユーザーのスマホにPush通知が送信されれば完成です。

・完成イメージ

実装イメージはこんな感じになります。
f:id:kurakurattyo:20211101230120p:plain

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