【Dataverse】VSCodeによるDataverse Plugin

  • VScodeのPlugin
    Power Platform Tools
    Japanese Language Pack for Visual Studio Code
    C# Dev Kit
    C# ※自動?
    .NET Install Tool ※自動?
  • VScodeの開発1(失敗例)

    ターミナル
    mkdir MyDataversePlugin
    cd MyDataversePlugin
    pac plugin init --skip-signing ※これでプロジェクトが自動作成 ただし、この方法は署名なし
    dotnet add package Microsoft.CrmSdk.CoreAssemblies
    dotnet add package Microsoft.CrmSdk.XrmTooling.CoreAssembly
    

    C#で開発します。

    ターミナル
    dotnet build -c Release
    

    ビルドが成功すると以下にdllファイルが作成される。
    C:\Users\ユーザ名\MyDataversePlugin\bin\Release\net462\publish\MyDataversePlugin.dll

    Plug-in Registration Tool (PRT) を起動します。

    ターミナル
    pac tool prt ※コマンド実行後にWindowsに自動インストール
    サインインは「Office365」、「Display list of avaiable organizations」を選択
    

    この後にアセンブリを登録しようとすると署名エラーとなってしまう。

  • VScodeの開発2(失敗例)

    ターミナル
    mkdir MyDataversePlugin
    cd MyDataversePlugin
    dotnet new classlib -lang C# -o . ※失敗例1との違いはココ
    dotnet add package Microsoft.CrmSdk.CoreAssemblies
    dotnet add package Microsoft.CrmSdk.XrmTooling.CoreAssembly
    

    C#で開発します。

    ターミナル
    dotnet build -c Release
    

    ビルドが成功すると以下にdllファイルが作成される。
    C:\Users\ユーザ名\MyDataversePlugin\bin\Release\net462\publish\MyDataversePlugin.dll

    Plug-in Registration Tool (PRT) を起動します。

    ターミナル
    pac tool prt ※コマンド実行後にWindowsに自動インストール
    サインインは「Office365」、「Display list of avaiable organizations」を選択
    

    この後にアセンブリを登録しようとすると参照ライブラリのバージョンでエラーとなってしまう。

  • 失敗原因

    ビルド時に作成されるフォルダが「net462」となっているように
    .NETFrameworkが4.62になっている必要があるようです。
    VScodeインストールした際に.NET9.0をインストールしていました。

    .NETFrameworkはWindows専用であるのに対し、
    .NETはクロスプラットフォーム(Windows, Linux, macOS)の違いがあるようです。


    またアセンブリにもパスワードなしの署名が必要なようです。


    以下の参照は不要。
    dotnet add package Microsoft.CrmSdk.XrmTooling.CoreAssembly

  • 参考サイト
    https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/build-and-package
    「プラグインおよびカスタム ワークフロー活動アセンブリ プロジェクトは、.NET Framework 4.6.2 をターゲットにする必要があります」の記述あり。

    https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/tutorial-write-plug-in
    上記のサイトを見るとVisual Studioを使っていたのでVisual Studio2022を使うことにしました。
    プロジェクトを作成する際、.NETクラスライブラリではなく、
    .NETFrameworkクラスライブラリプロジェクトを作成することに注意。

【PowerShell】オレオレ証明書の作成

  • オレオレ証明書作成
    Windows11のPower Shellを使ってオレオレ証明書を作成します。
    以下の構文だと特定のドメインに対して有効期間10年。
    「Cert:\CurrentUser\My」は本当にそのままです。

    New-SelfSignedCertificate -Subject "CN=example.com" -CertStoreLocation Cert:\CurrentUser\My -DnsName example.com -NotAfter (Get-Date).AddYears(10)
    
  • 作成した証明書の確認方法
    ファイル名を指定して実行(Windows+R)を開き、「certmgr.msc」を実行します。
    「証明書」-「個人」に作成した証明書が保存されています。
  • pfxファイルの作成方法
    証明書を選択し、右クリックし、「すべてのタクス」-「エクスポート」を選択します。
    「はい、秘密キーをエクスポートします」を選択します。
    「証明のパスにある証明書を可能であればすべてを含む」を選択します。
    「証明書のプライバシーを有効にする」を選択します。

    ファイル名とパスワードを入力します。
    例:zarea0614cert、ユーザー名数字記号
    エクスポート後は「C:\Windows\System32」に「zarea0614cert.pfx」が出力されます。

【Power Apps】モデル駆動型アプリのビジネスプロセスフロー

  • モデル駆動型アプリのビジネスプロセスフロー
    条件分岐によってフローを切り替えることも可能。
    合流させることも可能。

    合流させるには、合流させたいステージを選択して[コネクタ]→[接続]を押下して
    合流後のステージを選ぶと合流できる。

    参考サイト
    ttps://ippu-biz.com/development/powerplatform/powerapps/mda/bpf-condition/

【Power Apps】ダッシュボードとグラフ

  • ダッシュボード
    ダッシュボードは事前に準備した一覧画面(ビュー)やグラフを決まった枠内に配置できる機能。
    ・テーブルそのものを表示することも可能。
    ・テーブルを基に目的に合わせて行列を絞り込んだビューを表示することも可能。
    ・ビューを基に作成したグラフを表示することも可能。
  • グラフ
    グラフはビューに連動しており、ダッシュボード内で絞り込み条件を変更することで
    グラフも動的に変わる。

    予実比較ようなグラフも作成できる。
    横軸:年、タイプ(見積/実績)
    縦軸:比較項目(月ごとの金額とか)
    参考サイト
    ttps://www.arcuss-japan.com/crmblogs/2020/01/07/3161/

【Power Automate】Excelファイルの操作

  • Excelファイルを開く
    監視が成功するとJSONが戻ってくるので、その中から34桁のブックIDを取得し、
    それをExcel操作用に利用する必要がある。
    参考サイト
    ttps://qiita.com/fukasuke/items/1502b9b9b045c78f67e9

    具体的な取得方法としては戻り値の中から「Thumbnail」を取得する。
    Thumbnailを「&」で分解すると以下の形式となるので、
    「docid」をsubstringやindexOfを駆使して取得する。

    https://japaneast1-mediap.svc.ms/transform/thumbnail
    ?provider=spo
    &inputFormat=xlsx
    &cs=fFNQTw
    &docid=https%3a%2f%2f・・・
    &width=xxx
    &height=xxx
    

【Power Automate】動的コンテンツと式

  • 動的コンテンツと式
    Power Automateで選択した動的コンテンツはすべて式で表現できる。
    例)以下は同じ意味

    substring(variables('変数名'), indexOf(variables('変数名'), 'https%3a%2f%2f'))
    substring(動的コンテンツから指定, indexOf(動的コンテンツから指定, 'https%3a%2f%2f'))
    

    動的コンテンツから指定=variables(‘変数名’)は同じオブジェクトを指している。

【Power Automate】選択肢のコード値

  • Power Automateで選択肢のコード値を使う
    テーブルの選択肢を設定画面から見ると「530,100,000」のように
    カンマ区切りで表記されるが、
    PowerAutomateで条件式で利用する際は
    数値で「530100000」のようにカンマを除去して利用する。