デスクトップ用の Power Automate でカスタム アクションを構築する方法
デスクトップ用 Power Automate のカスタム アクションを使用して、生産性、再利用性、拡張性を向上します。 この記事では、デスクトップ用 Power Automate のカスタム アクション が、複数のフローで使用できる独自の再利用可能なアクションを作成者が作成するのにどのように役立つかについて説明します。 作成者は、一連のステップまたは関数を新しいアクションに組み込むことによってカスタム アクションを作成します。 カスタム アクションは、デスクトップ アクション SDK 用 Power Automate を使用して作成されます。この SDK は、作成者が .NET 言語 C# を使用してカスタム アクションを作成できるようにする API セットを提供します。 カスタム アクションは、Power Automate (make.powerautomate.com) のカスタム アクション セクションを通じて他のユーザーと共有することもできます。 この記事では、カスタム アクションを作成、構築、デプロイ、使用、更新する方法について詳しく説明します。
重要
カスタム アクションの作成に使用される重要な機能はサポートされていますが、ここで説明されている提供されたソリューション、アセット、およびサンプル スクリプトは、これらの機能の実装例として機能し、サポートは含まれません。
概要
デスクトップ用 Power Automate のカスタムアクション機能を使用すると、複数のデスクトップ フロー間で使用できる再利用可能な独自のアクションを作成できます。 カスタム アクションを使用すると、新しいフローを構築するたびにアクションを再作成することなく、複雑なアクションや頻繁に使用するアクションを再利用できるため、時間と労力を節約できます。 作成者は、既存のスキルと知識を応用して、他のシステムやサービスと統合するカスタム アクションを作成できます。 さらに、プロ開発者は、既存の関数またはコード ライブラリをラップして、組織資産の再利用性を高める新しいカスタム アクションを作成できます。
一連の方法または関数を新しいアクションに組み込むことによってカスタム アクションを作成します。 カスタム アクションを作成したら、それを Power Automate デスクトップ デザイナー キャンバスにドラッグ アンド ドロップして任意のデスクトップ フローで使用します。
カスタム アクションは、Power Automate のカスタム アクション セクションを通じて他のユーザーと共有できます。これは、カスタム アクションを共有および検出するための中央リポジトリを提供します。 これは、ユーザーが組織内の他のユーザーの専門知識や知識から恩恵を受けることができ、他の作成者が作成したカスタム アクションを簡単に見つけて使用できることを意味します。
全体的に、デスクトップ用 Power Automate のカスタムアクションは、製品の機能を拡張し、フロー構築プロセスを合理化し、組織内のコラボレーションとイノベーションを促進する強力な方法を提供します。
前提条件
- デスクトップ用 Power Automate の最新版 - Power Automate をインストールする
- .NET デスクトップ開発ワークロードのVisual Studio コミュニティ/プロフェッショナル/エンタープライズ 2022 などの # オーサリング ツール
- カスタムアクション SDK – NuGet ギャラリー | Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK
- デジタル証明書:
- 自己署名証明書を生成する – 自己署名証明書の生成の概要 – .NET
- エンタープライズ展開 – 証明機関からの組織の信頼された証明書 – デジタル署名と証明書 – Office サポート
- SignTool:
- Windows PowerShell スクリプト (.ps1) – カスタム アクションの作成 – Power Automate
独自のカスタム アクションを作成する
Visual Studio を開いて、クラス ライブラリ (.NET Framework) のテンプレートを使用した新しいプロジェクトを作成します。
プロジェクト名とファイルの場所を使用して新しいプロジェクトを構成し、Framework を .NET Framework 4.7.2 として設定します。。
注意
必ず名前付け規則に従ってください。 詳細: カスタム モジュール名の規則
Visual Studio で、ツール>NuGet パッケージマネージャー>パッケージ マネージャー コンソールの順に選択します。
PowerShell ウィンドウを開き、この PowerShell コマンドを使用して NuGet パッケージ PowerAutomate.Desktop.Actions.SDK をインストールします。
Find-Package Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK NuGet\Install-Package Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK
「カスタム アクションの作成」の手順に従って、カスタム アクションのクラス ファイルを作成します。
アクションの参考となる情報
リファレンス ソリューション アーカイブ: .NET モジュール ソリューション
アクション: メッセージをローカル ファイルに書き込みます。
入力パラメータ: ファイル名、ファイルに書き込むメッセージ。
出力パラメータ: ステータス コード – 成功した場合は true、失敗した場合は false。
クラス定義:
using System;
using System.IO;
using Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK;
using Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK.Attributes;
namespace ModulesLogEvent
{
[Action(Id = "LogEventToFile" , Order = 1, Category = "Logging")]
[Throws("LogEventError")]
public class LogEventToFile : ActionBase
{
[InputArgument]
public string LogFileName { get; set; }
[InputArgument]
public string LogMessage { get; set; }
[OutputArgument]
public bool StatusCode { get; set; }
public override void Execute(ActionContext context)
{
try
{
// To append all of the text to the file
File.AppendAllText(LogFileName, LogMessage);
StatusCode = true;
}
catch (Exception e)
{
if (e is ActionException) throw;
throw new ActionException("LogEventError", e.Message, e.InnerException);
}
}
}
}
リソース: この表には、Resources.resx のパラメータの説明とフレンドリ名がリストされています。
件名 | 価値 | Comment | |
---|---|---|---|
LogEventToFile_Description | 提供されたファイルにメッセージを記録するカスタム アクション | アクションの説明 | |
LogEventToFile_FriendlyName | LogEventToFile | Action name | |
LogEventToFile_LogFileName_Description | テキスト ターゲットの入力パラメータ | アクション入力の説明 | |
LogEventToFile_LogFileName_FriendlyName | LogFileName | アクション入力名 | |
LogEventToFile_LogFileName_Description | テキスト ターゲットの入力パラメータ | アクション入力の説明 | |
LogEventToFile_LogMessage_FriendlyName | LogMessage | アクション入力名 | |
LogEventToFile_StatusCode_Description | ブール型の出力パラメータ | アクション出力の説明 | |
LogEventToFile_StatusCode_FriendlyName | LogMessage | Action outputName | |
ModulesLogEvent_Description | ログ イベントを管理するモジュール | モジュールの説明 | |
ModulesLogEvent_FriendlyName | LogEvent | モジュール名 |
パッケージをビルドしてカスタム アクションをデプロイする
パッケージを作成し、Power Automate にデプロイします。
カスタム アクション DLL ファイルに署名できるようにデジタル証明書を取得します。
重要
自己署名証明書はテスト目的のみに使用され、運用環境での使用はお勧めできません。 環境内でカスタム アクションを組織的に展開するには、組織のガイドラインに従った信頼できるデジタル証明書を使用することをお勧めします。
チップ
組織全体でデスクトップ用 Power Automate のカスタム アクションを開発および使用するプロセスを合理化するには、SCCM/Appstore を通じて配布されるデスクトップ用 Power Automate インストーラーに信頼できるデジタル証明書をバンドルできます。 > これにより、デスクトップ用 Power Automate を必要とする作成者と無人ランタイム マシンの両方に、追加のアクションを必要とせずに証明書を自動的にインストールできるようになります。
この例では、自己署名証明書が使用されます。
このスクリプトを使用して自己署名証明書を作成します。
$certPFXFileName="C:\PADCustomAction\PADCustomActionCert.pfx"; $certCERFileName="C:\PADCustomAction\PADCustomActionCert.cer"; $certStoreLocation="Cert:\LocalMachine\AuthRoot"; $certname = "PADCustomActionSelfSignCert" ##Create certificate $cert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -Type CodeSigningCert -Subject "CN=$certname" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 $mypwd = ConvertTo-SecureString -String <YOUR CERT PASSWORD GOES HERE> -Force -AsPlainText ##Export certificate $certPFXFile = Export-PfxCertificate -Cert $cert -FilePath $certPFXFileName -Password $mypwd $certCERFile = Export-Certificate -Cert $cert -FilePath $certCERFileName -Type CERT -Verbose -Force
このコマンドを使用して、証明書を証明書ストアにインポートします。
##Import certificate Import-Certificate -CertStoreLocation $certStoreLocation -FilePath $certCERFile
インポートされた証明書が、証明書 Microsoftマネージャー コンソール (MMC) スナップインの 信頼されたルート証明機関>証明書 に表示されることを確認します。
信頼された証明書を使用して DLL ファイルに署名し、作成されたカスタム モジュールを完成させます。 このアクティビティに Signtool を使用するには、Visual Studio の開発者コマンド プロンプトを使用します。
Signtool sign /f "C:/PADActions/PADCustomActionCert.pfx" /p <YOURCERTPASSWORD> /fd SHA256 "C:/PADActions/PADCustomActionEventLog/Modules.LogEvent.dll"
カスタム アクションを展開するには、この PowerShell スクリプトを使用して、パッケージの内容をキャビネット ファイル (.cab) に構築します。
.\BuildCAB.ps1 "C:/PADActions/PADCustomActionEventLog" "C:/PADActions/PADCustomActionEventLog" PADCustomActionEventLog.cab
Signtool を使用して、生成されたキャビネット ファイルに署名します。
Signtool sign /f "C:/PADActions/PADCustomActionCert.pfx" /p <YOURCERTPASSWORD> /fd SHA256 "C:/PADActions/PADCustomActionEventLog/PADCustomActionEventLog.cab"
Power Automate カスタム アクション セクションに移動して、作成したカスタム アクションをアップロードします。 名前、説明、およびキャビネット ファイルを入力して、アップロードを選択します。
アクションが正常にアップロードされたら、通知を受信します。
これらの手順に従って、カスタム アクション モジュールがキャビネット ファイルにパッケージ化され、信頼できる証明書で署名されます。 さらに、カスタム アクション キャビネット ファイルは、Power Automate のカスタム アクション ライブラリにアップロードされます。
デスクトップ用 Power Automate を使用してデスクトップ フローでカスタム アクション アクティビティを使用する
新しいデスクトップ フローを作成し、デザイナーで アセット ライブラリ を選択します。
アセット ライブラリで利用可能なカスタム アクションを調べます。 以前に作成され、Power Automate のカスタム アクション セクションにアップロードされたアクションに注目してください。
追加 を選択して、このカスタム アクションをデザイナーの アクション セクションに追加します。
カスタム アクションが正常に追加されたことを検証します。 デスクトップ用 Power Automate の アクション 検索バーで検索します。
カスタム アクションをドラッグするか、ダブルクリックしてデスクトップ フローに追加します。
入力パラメータと追加の手順を指定して、カスタム アクションをテストします。
カスタム アクションを使用したサンプル デスクトップ フロー。
フローをテストして、カスタム アクションがリアルタイムで動作していることを確認します。
注意
キャビネット ファイルの署名に使用される証明書を、カスタム アクションを含むデスクトップ フローの構築に使用されるマシンと、デスクトップ フローを実行する各ランタイム マシンにインポートします。
これらの手順に従って、カスタム アクションが作成され、モジュールがキャビネット ファイルにパッケージ化され、信頼できる証明書で署名され、Power Automate のカスタム アクション ライブラリにアップロードされ、正常に実行されるかどうかテストされたカスタム アクションを使用するためのデスクトップ フロー。
カスタムアクションを更新して再デプロイする
次の手順に従って、カスタム アクションの機能を更新して、更新された機能を反映します。
新しいアクション機能で、クラス ファイル Visual Studio ソリューションをを更新します。 詳細: 更新された .NET モジュール ソリューション
図に示すように、3 番目の入力パラメータを受け入れるようにクラス ファイルの署名を変更しました。
using System; using System.IO; using Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK; using Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK.Attributes; namespace ModulesLogEvent { [Action(Id = "LogEventToFile" , Order = 1, Category = "Logging")] [Throws("LogEventError")] public class LogEventToFile : ActionBase { [InputArgument] public string LogFileName { get; set; } [InputArgument] public string LogMessage { get; set; } [InputArgument] public string LogLevel { get; set; } [OutputArgument] public bool StatusCode { get; set; } public override void Execute(ActionContext context) { try { // To append all of the text to the file File.AppendAllText(LogFileName, LogLevel + ": " + LogMessage); StatusCode = true; } catch (Exception e) { if (e is ActionException) throw; throw new ActionException("LogEventError", e.Message, e.InnerException); } } } }
DLL ファイルに署名し、キャビネット ファイルを作成し、キャビネット ファイルに署名し、キャビネット ファイルを Power Automate のカスタム アクション セクションにアップロードする場合は、前に説明したのと同様の手順を使用します。 詳細: パッケージをビルドしてカスタム アクションをデプロイする
注意
このアクションを含むデスクトップ フローは新しい機能で更新されるため、更新されたカスタム アクション キャビネット ファイルをアップロードする前に、必ずこの変更の影響を分析してください。
必要に応じてデスクトップ フローを更新します。
更新機能を検証するために、カスタム アクションに 3 番目の入力パラメータを追加しました。 カスタム アクション アクティビティはデザイナーでエラーとしてマークされており、新しい入力パラメータで更新する必要があることに注意してください。
フローをテストして、リアルタイムで動作しているカスタム アクションがを更新されたことを確認します。
このセクションでは、デスクトップ用 Power Automate カスタム アクションの更新済み機能を更新し、パッケージを構築して、Power Automate にデプロイし、デスクトップ フローをリファクタリングし、カスタム アクションの更新された機能を使用してデスクトップ フローを実行することで機能を検証しました。