Cmdlets for Blackbaud Raisers Edge NXT

Build 24.0.9062

接続の確立

CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でRaiserEdgeNXT Cmdlets を使用する例を示します。

インストールおよび接続

PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。

Install-Module RaiserEdgeNXTCmdlets

プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。

Import-Module RaiserEdgeNXTCmdlets;

Connect-RaiserEdgeNXT cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。

$conn = Connect-RaiserEdgeNXT -OAuthClientId "MyOAuthClientId" -OAuthClientSecret "MyOAuthClientSecret" -SubscriptionKey "MySubscriptionKey" -CallbackURL "http://localhost:33333"

BlackBaud Raiser's Edge NXT への接続

接続を確立する前に、BlackBaud Raiser's Edge NXT プロファイルにあるSubscriptionKey を指定します。

BlackBaud Raiser's Edge NXT への認証

BlackBaud Raiser's Edge NXT は埋め込みOAuth クレデンシャルを提供しており、デスクトップアプリケーション またはヘッドレスマシンからの接続を簡単にします。 Web アプリケーションから接続するには、カスタムOAuth アプリケーションの作成 で説明するようにカスタムOAuth アプリケーションを作成する必要があります。

接続する場合は、すべての認証フローで以下の手順が必要です。

  • AuthSchemeOAuth に設定
  • SubscriptionKey をサブスクリプションキーに設定
  • 結果を取得するために認証アカウントでBlackBaud Raiser's Edge NXT を有効化

以下のサブセクションでは、利用可能なすべてのOAuth フローでBlackBaud Raiser's Edge NXT へ認証する方法について詳しく説明します。 Web 経由で接続するためのカスタムOAuth アプリケーションの作成については、カスタムOAuth アプリケーションの作成 を参照してください。 BlackBaud Raiser's Edge NXT で利用可能な接続文字列プロパティの全リストは、Connection を参照してください。

デスクトップアプリケーション

デスクトップアプリケーションから接続する場合、埋め込みOAuth アプリケーションを介して接続するか、BlackBaud Raiser's Edge NXT コンソールで設定および登録するカスタムOAuth アプリケーションを介してデスクトップから認証することもできます。詳しくは、カスタムOAuth アプリケーションの作成 を参照してください。

接続する前に、次のプロパティを設定します。

  • カスタムアプリケーションのみ:
    • CallbackURL:カスタムOAuth アプリケーションの設定で指定されたRedirect URL。
    • OAuthClientId:カスタムOAuth アプリケーションの設定で指定されたクライアントId。
    • OAuthClientSecret:カスタムOAuth アプリケーションの設定で指定されたクライアントシークレット。

接続すると、本製品 はデフォルトブラウザでOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。以下のように本製品 がOAuth プロセスを完了します。

  • コールバックURL からアクセストークンを取得します。
  • 古いトークンの期限が切れたときは、新しいアクセストークンを取得します。
  • OAuthSettingsLocation にOAuth 値を保存し、接続間で永続化します。

Web アプリケーション

Web アプリケーション経由で接続する場合は、BlackBaud Raiser's Edge NXT にカスタムOAuth アプリケーションを作成および登録する必要があります。それから本製品 を使用してOAuth トークンの値を取得および管理します。カスタムOAuth アプリケーションを作成し、BlackBaud Raiser's Edge NXT 環境に接続する設定方法については、カスタムOAuth アプリケーションの作成 を参照してください。

OAuth アクセストークンの取得

OAuthAccessToken を取得するには、次のプロパティを設定します。

  • OAuthClientId:カスタムOAuth アプリケーションの設定で指定されたクライアントId。
  • OAuthClientSecret:カスタムOAuth アプリケーションの設定で指定されたクライアントシークレット。

続いてストアドプロシージャを呼び出し、OAuth 交換を完了します。

  1. GetOAuthAuthorizationURL ストアドプロシージャを呼び出します。AuthMode インプットをWEB に設定し、CallbackURL インプットをカスタムOAuth アプリケーションの設定時に指定したリダイレクトURI に設定します。必要に応じて、Permissions パラメータを設定してカスタム権限をリクエストします。ストアドプロシージャがOAuth エンドポイントのURL を返します。
  2. ステップ1でストアドプロシージャが返したURL に移動します。カスタムOAuth アプリケーションにログインして、Web アプリケーションを認可します。アプリケーションが認証されると、ブラウザはコールバックURL にリダイレクトします。
  3. GetOAuthAccessToken ストアドプロシージャを呼び出します。AuthMode をWEB に、Verifier インプットをコールバックURL のクエリ文字列の"code" パラメータに設定します。必要に応じて、Permissions パラメータを設定してカスタム権限をリクエストします。

OAuthAccessToken 接続プロパティをストアドプロシージャで返されたアクセストークンに設定し、データに接続します。ExpiresIn 秒後に、アクセストークンの期限が切れたときは、GetOAuthAccessToken を再度呼び出し、新しいアクセストークンを取得します。

ヘッドレスマシン

ヘッドレスマシンのユーザーアカウントでOAuth を使用するようにドライバーを設定するには、インターネットブラウザに対応した別の端末で認証する必要があります。

  1. 次のオプションのいずれか1つを設定してください。
    • オプション1:後述の「Verifier code を取得および交換」に従い、OAuthVerifier 値を取得します。
    • オプション2:インターネットブラウザに対応したマシンに本製品 をインストールし、後述のオプション2:OAuth 設定を転送の説明に従い、通常のブラウザベースのフローで認証後にOAuth 認証値を転送します。
  2. 次に、ヘッドレスマシンからアクセストークンを自動的にリフレッシュするように本製品 を設定します。

オプション1:Verifier code を取得および交換

Verifier code を取得するには、OAuth Authorization URL で認証する必要があります。

インターネットブラウザに対応したマシンから認証してOAuthVerifier 接続プロパティを取得する方法は次のとおりです。

  1. 以下のオプションから選択します。
    • 埋め込みOAuth アプリケーションを使用する場合は、BlackBaud Raiser's Edge NXT OAuth endpoint をクリックし、ブラウザでエンドポイントを開きます。
    • カスタムOAuth アプリケーションを使用するには、以下のプロパティを設定し、認証URL を作成します。
      • InitiateOAuthOFF に設定。
      • OAuthClientId:カスタムOAuth アプリケーションで指定されたクライアントId に設定。
      • OAuthClientSecret:カスタムOAuth アプリケーションで指定されたクライアントシークレットに設定。
      次に、適切なCallbackURL を指定してGetOAuthAuthorizationURL ストアドプロシージャを呼び出します。ストアドプロシージャによって返されたURL をブラウザで開きます。
  2. ログインして、本製品 にアクセス許可を与えます。すると、verifier code を含むコールバックURL にリダイレクトされます。
  3. verifier code の値を保存します。後ほどこれをOAuthVerifier 接続プロパティに設定します。

次に、OAuth verifier code をOAuth リフレッシュトークンおよびアクセストークンと交換する必要があります。

ヘッドレスマシンでは、OAuth 認証値を取得するには次の接続プロパティを設定します。

  • InitiateOAuthREFRESH
  • OAuthVerifier:verifier code。
  • OAuthSettingsLocation:暗号化されたOAuth 認証値を指定された場所に永続化。
  • カスタムアプリケーションのみ:
    • OAuthClientId:カスタムOAuth アプリケーションの設定で指定されたクライアントId。
    • OAuthClientSecret:カスタムOAuth アプリケーションの設定で指定されたクライアントシークレット。

OAuth 設定ファイルが生成されたら、以下のように接続プロパティをリセットする必要があります。

  • InitiateOAuthREFRESH
  • OAuthSettingsLocation:暗号化されたOAuth 認証値が保存される場所。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
  • カスタムアプリケーションのみ:
    • OAuthClientId:カスタムOAuth アプリケーションの設定で指定されたクライアントId。
    • OAuthClientSecret:カスタムOAuth アプリケーションの設定で指定されたクライアントシークレット。

オプション2:OAuth 設定を転送

ヘッドレスマシンでの接続に先立ち、インターネットブラウザに対応したデバイスでドライバーとの接続を作成し、インストールする必要があります。上述の「デスクトップアプリケーション」の説明に従って、接続プロパティを設定します。

「デスクトップアプリケーション」の手順が完了すると、生成された認証値は、OAuthSettingsLocation で指定された場所に暗号化されて書き込まれます。デフォルトのファイル名はOAuthSettings.txt です。

接続が正常にテストされたら、OAuth 設定ファイルをヘッドレスマシンにコピーし、以下の接続プロパティを設定してデータに接続します。

  • InitiateOAuthREFRESH
  • OAuthSettingsLocation:OAuth 設定ファイルの場所に設定。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
  • カスタムアプリケーションのみ:
    • OAuthClientId:カスタムOAuth アプリケーションの設定で指定されたクライアントId。
    • OAuthClientSecret:カスタムOAuth アプリケーションの設定で指定されたクライアントシークレット。

データの取得

Select-RaiserEdgeNXT cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。

$results = Select-RaiserEdgeNXT -Connection $conn -Table "Constituents" -Columns @("Id, AddressLines") -Where "Type='Home'"
Invoke-RaiserEdgeNXT cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。

Select-RaiserEdgeNXT -Connection $conn -Table Constituents -Where "Type = 'Home'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myConstituentsData.csv -NoTypeInformation

Select-RaiserEdgeNXT からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。

ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。

 
PS C:\> $conn  = Connect-RaiserEdgeNXT -OAuthClientId "MyOAuthClientId" -OAuthClientSecret "MyOAuthClientSecret" -SubscriptionKey "MySubscriptionKey" -CallbackURL "http://localhost:33333"
PS C:\> $row = Select-RaiserEdgeNXT -Connection $conn -Table "Constituents" -Columns (Id, AddressLines) -Where "Type = 'Home'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "Constituents",
  "Columns":  [

  ],
  "Id":  "MyId",
  "AddressLines":  "MyAddressLines"
} 

データの変更

cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをBlackBaud Raiser's Edge NXT にロードします。

Import-Csv -Path C:\MyConstituentsUpdates.csv | %{
  $record = Select-RaiserEdgeNXT -Connection $conn -Table Constituents -Where ("Id = `'"+$_.Id+"`'")
  if($record){
    Update-RaiserEdgeNXT -Connection $conn -Table Constituents -Columns @("Id","AddressLines") -Values @($_.Id, $_.AddressLines) -Where "Id  = `'$_.Id`'"
  }else{
    Add-RaiserEdgeNXT -Connection $conn -Table Constituents -Columns @("Id","AddressLines") -Values @($_.Id, $_.AddressLines)
  }
}

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062