Share via


デスクトップ用の 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 のカスタムアクションは、製品の機能を拡張し、フロー構築プロセスを合理化し、組織内のコラボレーションとイノベーションを促進する強力な方法を提供します。

前提条件

独自のカスタム アクションを作成する

  1. Visual Studio を開いて、クラス ライブラリ (.NET Framework) のテンプレートを使用した新しいプロジェクトを作成します。 [C# プロジェクトの作成] ダイアログ ボックスのスクリーンショット。

  2. プロジェクト名とファイルの場所を使用して新しいプロジェクトを構成し、Framework.NET Framework 4.7.2 として設定します。。

    注意

    必ず名前付け規則に従ってください。 詳細: カスタム モジュール名の規則

    C# クラス ライブラリの作成の詳細のスクリーンショット。

  3. Visual Studio で、ツール>NuGet パッケージマネージャー>パッケージ マネージャー コンソールの順に選択します。

    [.NET パッケージ マネージャー] のスクリーンショット。

  4. PowerShell ウィンドウを開き、この PowerShell コマンドを使用して NuGet パッケージ PowerAutomate.Desktop.Actions.SDK をインストールします。

    Find-Package Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK
    NuGet\Install-Package Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK
    
  5. カスタム アクションの作成」の手順に従って、カスタム アクションのクラス ファイルを作成します。

アクションの参考となる情報

リファレンス ソリューション アーカイブ: .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 にデプロイします。

  1. カスタム アクション DLL ファイルに署名できるようにデジタル証明書を取得します。

    重要

    自己署名証明書はテスト目的のみに使用され、運用環境での使用はお勧めできません。 環境内でカスタム アクションを組織的に展開するには、組織のガイドラインに従った信頼できるデジタル証明書を使用することをお勧めします。

    チップ

    組織全体でデスクトップ用 Power Automate のカスタム アクションを開発および使用するプロセスを合理化するには、SCCM/Appstore を通じて配布されるデスクトップ用 Power Automate インストーラーに信頼できるデジタル証明書をバンドルできます。 > これにより、デスクトップ用 Power Automate を必要とする作成者と無人ランタイム マシンの両方に、追加のアクションを必要とせずに証明書を自動的にインストールできるようになります。

    この例では、自己署名証明書が使用されます。

    1. このスクリプトを使用して自己署名証明書を作成します。

      $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
      
    2. このコマンドを使用して、証明書を証明書ストアにインポートします。

      ##Import certificate
      Import-Certificate -CertStoreLocation $certStoreLocation -FilePath $certCERFile
      
    3. インポートされた証明書が、証明書 Microsoftマネージャー コンソール (MMC) スナップインの 信頼されたルート証明機関>証明書 に表示されることを確認します。

      証明書マネージャーでの証明書の検証のスクリーンショット

  2. 信頼された証明書を使用して DLL ファイルに署名し、作成されたカスタム モジュールを完成させます。 このアクティビティに Signtool を使用するには、Visual Studio の開発者コマンド プロンプトを使用します。

    Signtool sign /f "C:/PADActions/PADCustomActionCert.pfx" /p <YOURCERTPASSWORD> /fd SHA256 "C:/PADActions/PADCustomActionEventLog/Modules.LogEvent.dll"
    
  3. カスタム アクションを展開するには、この PowerShell スクリプトを使用して、パッケージの内容をキャビネット ファイル (.cab) に構築します。

    .\BuildCAB.ps1 "C:/PADActions/PADCustomActionEventLog" "C:/PADActions/PADCustomActionEventLog" PADCustomActionEventLog.cab
    

    サンプル スクリプト ファイル BuildCAB.ps1 に移動します

  4. Signtool を使用して、生成されたキャビネット ファイルに署名します。

    Signtool sign /f "C:/PADActions/PADCustomActionCert.pfx" /p <YOURCERTPASSWORD> /fd SHA256 "C:/PADActions/PADCustomActionEventLog/PADCustomActionEventLog.cab"
    
  5. Power Automate カスタム アクション セクションに移動して、作成したカスタム アクションをアップロードします。 名前、説明、およびキャビネット ファイルを入力して、アップロードを選択します。

    Power Automate ポータルでのカスタム アクション パッケージ (CAB ファイル) のインポートのスクリーンショット

    アクションが正常にアップロードされたら、通知を受信します。

これらの手順に従って、カスタム アクション モジュールがキャビネット ファイルにパッケージ化され、信頼できる証明書で署名されます。 さらに、カスタム アクション キャビネット ファイルは、Power Automate のカスタム アクション ライブラリにアップロードされます。

詳細: カスタム アクションをアップロードする

デスクトップ用 Power Automate を使用してデスクトップ フローでカスタム アクション アクティビティを使用する

  1. 新しいデスクトップ フローを作成し、デザイナーで アセット ライブラリ を選択します。

    デスクトップ用 Power Automate で [アセット ライブラリに移動] のスクリーンショット

  2. アセット ライブラリで利用可能なカスタム アクションを調べます。 以前に作成され、Power Automate のカスタム アクション セクションにアップロードされたアクションに注目してください。

    追加 を選択して、このカスタム アクションをデザイナーの アクション セクションに追加します。

    [アセット ライブラリからカスタム アクションを追加する] のスクリーンショット

  3. カスタム アクションが正常に追加されたことを検証します。 デスクトップ用 Power Automate の アクション 検索バーで検索します。

    デスクトップ用 Power Automate の [カスタム アクションの検索] のスクリーンショット

  4. カスタム アクションをドラッグするか、ダブルクリックしてデスクトップ フローに追加します。

  5. 入力パラメータと追加の手順を指定して、カスタム アクションをテストします。

    カスタム アクションの入力パラメータのスクリーンショット

    カスタム アクションを使用したサンプル デスクトップ フロー。

    デスクトップ フローの [カスタム アクションの使用] のスクリーンショット

  6. フローをテストして、カスタム アクションがリアルタイムで動作していることを確認します。

    デスクトップ フローでカスタム アクションをテストする

注意

キャビネット ファイルの署名に使用される証明書を、カスタム アクションを含むデスクトップ フローの構築に使用されるマシンと、デスクトップ フローを実行する各ランタイム マシンにインポートします。

これらの手順に従って、カスタム アクションが作成され、モジュールがキャビネット ファイルにパッケージ化され、信頼できる証明書で署名され、Power Automate のカスタム アクション ライブラリにアップロードされ、正常に実行されるかどうかテストされたカスタム アクションを使用するためのデスクトップ フロー。

カスタムアクションを更新して再デプロイする

次の手順に従って、カスタム アクションの機能を更新して、更新された機能を反映します。

  1. 新しいアクション機能で、クラス ファイル 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);
             }
         }
      }
    }
    
  2. DLL ファイルに署名し、キャビネット ファイルを作成し、キャビネット ファイルに署名し、キャビネット ファイルを Power Automate のカスタム アクション セクションにアップロードする場合は、前に説明したのと同様の手順を使用します。 詳細: パッケージをビルドしてカスタム アクションをデプロイする

    注意

    このアクションを含むデスクトップ フローは新しい機能で更新されるため、更新されたカスタム アクション キャビネット ファイルをアップロードする前に、必ずこの変更の影響を分析してください。

    Power Automate ポータルでカスタム アクションを更新するスクリーンショット

  3. 必要に応じてデスクトップ フローを更新します。

    更新機能を検証するために、カスタム アクションに 3 番目の入力パラメータを追加しました。 カスタム アクション アクティビティはデザイナーでエラーとしてマークされており、新しい入力パラメータで更新する必要があることに注意してください。

    デスクトップ フローをリファクタリングするスクリーンショット

    追加の入力パラメータを使用して更新されたカスタム アクションのスクリーンショット

  4. フローをテストして、リアルタイムで動作しているカスタム アクションがを更新されたことを確認します。

    デスクトップ フローで更新されたカスタム アクションを再テストします

このセクションでは、デスクトップ用 Power Automate カスタム アクションの更新済み機能を更新し、パッケージを構築して、Power Automate にデプロイし、デスクトップ フローをリファクタリングし、カスタム アクションの更新された機能を使用してデスクトップ フローを実行することで機能を検証しました。