接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でCvent Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module CventCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module CventCmdlets;
Connect-Cvent cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Cvent -InitiateOAuth "GETANDREFRESH" -OAuthClientId "MyOAuthClientId" -OAuthClientSecret "MyOAuthClientSecret"
Cvent REST API は、OAuth 2.0 のクライアント認証フローを使用してCvent へのリクエストを認可します。
接続の前に
Cvent への認証を行う前に、ワークスペースとOAuth アプリケーションを作成する必要があります。
ワークスペースの作成
ワークスペースを作成するには:- Cvent にサインインし、App Switcher(ページ右上の青いボタン) -> Admin に移動します。
- Admin メニューから、Integrations -> REST API に移動します。
- Developer Management の新しいタブが立ち上がります。新しいタブでManage API Access をクリックします。
- Workspace を作成し、名前を付けます。開発者にアクセスさせたいスコープを選択します。スコープは、開発者がアクセスできるデータドメインを制御します。
- All を選択すると、開発者は任意のスコープ、およびREST API にこれから追加されるスコープを選択できます。
- Custom を選択すると、開発者がOAuth アプリで選択できるスコープを、選択したスコープに制限できます。本製品 によって公開されるすべてのテーブルにアクセスするには、次のスコープを設定する必要があります。
- event/attendees:read
- event/attendees:write
- event/contacts:read
- event/contacts:write
- event/custom-fields:read
- event/custom-fields:write
- event/events:read
- event/events:write
- event/sessions:delete
- event/sessions:read
- event/sessions:write
- event/speakers:delete
- event/speakers:read
- event/speakers:write
- budget/budget-items:read
- budget/budget-items:write
- exhibitor/exhibitors:read
- exhibitor/exhibitors:write
- survey/surveys:read
- survey/surveys:write
OAuth アプリケーションの作成
Workspace を設定して招待すると、開発者はサインアップしてカスタムOAuth アプリを作成できます。手順については、カスタムOAuth アプリケーションの作成 を参照してください。Cvent への接続
OAuth アプリケーションを作成したら、次の接続プロパティを設定してCvent に接続します。
- InitiateOAuth:GETANDREFRESH。OAuthAccessToken を自動的に取得およびリフレッシュするために使用します。
- OAuthClientId:OAuth アプリケーションに関連付けられたClient ID。これは、Developer Portal のApplications ページにあります。
- OAuthClientSecret:OAuth アプリケーションに関連付けられたClient secret。これは、Developer Portal のApplications ページにあります。
データの取得
Select-Cvent cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Cvent -Connection $conn -Table "Events" -Columns @("Id, Title") -Where "Title='CDATA_EVENT'"Invoke-Cvent cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Cvent -Connection $conn -Table Events -Where "Title = 'CDATA_EVENT'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myEventsData.csv -NoTypeInformation
Select-Cvent からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Cvent -InitiateOAuth "GETANDREFRESH" -OAuthClientId "MyOAuthClientId" -OAuthClientSecret "MyOAuthClientSecret" PS C:\> $row = Select-Cvent -Connection $conn -Table "Events" -Columns (Id, Title) -Where "Title = 'CDATA_EVENT'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Events", "Columns": [ ], "Id": "MyId", "Title": "MyTitle" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-Cvent -Connection $conn -Table Events -Where "Title = 'CDATA_EVENT'" | Remove-Cvent
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをCvent にロードします。
Import-Csv -Path C:\MyEventsUpdates.csv | %{ $record = Select-Cvent -Connection $conn -Table Events -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-Cvent -Connection $conn -Table Events -Columns @("Id","Title") -Values @($_.Id, $_.Title) -Where "Id = `'$_.Id`'" }else{ Add-Cvent -Connection $conn -Table Events -Columns @("Id","Title") -Values @($_.Id, $_.Title) } }