PowerShell Cmdlets でUSPS データをCSV にエクスポート





USPS Cmdlets

USPS データにリアルタイム連携を実現するPowerShell Cmdlets。Cmdlets を使って、SQL Server と同感覚で多様なデータにリアルタイムアクセス。

標準PowerShell cmdlets を使ってUSPS テーブルにアクセスして、CSV にエクスポート。

CData Cmdlets Module for USPS は、直感的なUSPS データ連携を提供する標準cmdlet です。 本記事では、USPS Cmdlets を使ったサンプルを提供します。

USPS への接続を設定

To authenticate with USPS, set the following connection properties.

  • PostageProvider: The postage provider to use to process requests. Available options are ENDICIA and STAMPS. If unspecified, this property will default to ENDICIA.
  • UseSandbox: This controls whether live or test requests are sent to the production or sandbox servers. If set to true, the Password, AccountNumber, and StampsUserId properties are ignored.
  • StampsUserId: This value is used for logging into authentication to the Stamps servers. This value is not applicable for Endicia and is optional if UseSandbox is true.
  • Password: This value is used for logging into Endicia and Stamps servers. If the postage provider is Endicia, this will be the pass phrase associated with your postage account. It is optional if UseSandbox is true.
  • AccountNumber: The shipper's account number. It is optional if UseSandbox is true.
  • PrintLabelLocation: This property is required to use the GenerateLabels or GenerateReturnLabels stored procedures. This should be set to the folder location where generated labels should be stored.

The Cache Database

Many of the useful task available from USPS require a lot of data. To ensure this data is easy to input and recall later, utilize a cache database to make requests. Set the cache connection properties in order to use the cache:

  • CacheLocation: The path to the cache location, for which a connection will be configured with the default cache provider. For example, C:\users\username\documents\uspscache

As an alternative to CacheLocation, set the combination of CacheConnection and CacheProvider to configure a cache connection using a provider separate from the default.

$conn = Connect-USPS  -PostageProvider "$PostageProvider" -RequestId "$RequestId" -Password "$Password" -AccountNumber "$AccountNumber"

USPS データを取得してCSV にパイプライン

次の手順で、Senders テーブルデータを取得して、結果をCSV ファイルにエクスポートします:

Select-USPS -Connection $conn -Table Senders | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\mySendersData.csv -NoTypeInformation

このように、Select-USPS から取得した結果を、Select-Object cmdlet に流し、Export-Csv cmdlet に渡す前にいくつかのプロパティを除外しています。これは、CData Cmdlets が接続情報、テーブル、およびカラム情報が結果セットのそれぞれの"行"に挿入されるためです。それらの情報を表示したくない場合に、Export-Csv cmdlet に渡す前に除外を先に行い、それからCSV ファイルにエクスポートします。。

CData Cmdlets から、次のCmdlets にデータをパイプラインするところでは、接続、テーブル、カラムの情報が必要です。



Select-USPS -Connection $conn -Table Senders -Where "SenderID = 25" | Remove-USPS


CData Cmdlets は、データの加工やクレンジングを行うことができます。以下の手順では、CSV ファイルのデータを、挿入対象のオブジェクトに同じレコードが存在するかを確認した上で、存在する場合にはデータの更新、存在しない場合にはデータの挿入を行います。

Import-Csv -Path C:\MySendersUpdates.csv | %{
  $record = Select-USPS -Connection $USPS -Table Senders -Where ("Id = `'"+$_.Id+"`'")
    Update-USPS -Connection $usps -Table Senders -Columns ("FirstName","Phone") -Values ($_.FirstName, $_.Phone) -Where ("Id = `'"+$_.Id+"`'")
    Add-USPS -Connection $usps -Table Senders -Columns ("FirstName","Phone") -Values ($_.FirstName, $_.Phone)

このように、CData Cmdlets でデータ連携をシンプルに構成できます。Cmdlets では、モジュールのインストール、接続プロパティの設定だけで、データ連携の構築を始めることができます。是非、CData PowerShell Cmdlets の無償試用版をダウンロードして、シンプルかつパワフルなデータ連携を体感してください。