PowerShell でQuickBooks Online データをQuickBooks Desktop にインポートする方法



QuickBooks Online のデータをQuickBooks Desktop にエクスポートするのは、手間のかかる作業になりがちです。CData Cmdlets for QuickBooks を使えば、保存したQuickBooks Online データのQBXML ファイルを、SendQBXMLFile ストアドプロシージャを使って簡単にQuickBooks Desktop にインポートできます。

この記事では、QuickBooks Online データのダウンロード方法、SendQBXMLFile ストアドプロシージャの解説、そしてPowerShell スクリプトを使ってファイルをQuickBooks Desktop にインポートする手順をご紹介します。

QuickBooks Online データのエクスポート



まず、QuickBooks Online のデータをQBXML ファイルとしてダウンロードします。QuickBooks Online にログインし、設定メニュー()から「Export Data」をクリックしてください。なお、現時点ではQBXML ファイルとしてのエクスポートはInternet Explorer でのみ可能です。

Export Data ウィザードで、以下の4つのステップに従います:

  1. ステップ1:Prepare to export
  2. ステップ2:Select your data
  3. ステップ3:Request your data — ダウンロードの準備ができたら「Continue to Download」をクリック
  4. ステップ4:Create a QuickBooks for Windows company file — 「Download」をクリック

通常のエクスポート手順はここから煩雑になります。そこで、ここで一旦プロセスを止め、CData Cmdlets for QuickBooks を使ってQBXML ファイルをインポートしていきます。

SendQBXMLFile ストアドプロシージャ



SendQBXMLFile ストアドプロシージャを使用すると、QBXML ファイルをQuickBooks Desktop にインポートできます。このストアドプロシージャの主な用途は一括インサートの実行であり、QuickBooks Online の会社データ全体をQBXML ファイルとしてQuickBooks Desktop にインポートする際に最適な方法です。

なお、このストアドプロシージャを実行すると、既存の会社ファイルのデータが上書きされますのでご注意ください。

入力パラメータ

ストアドプロシージャには以下の入力パラメータがあります:

  • File (String):QuickBooks に送信するQBXML ファイルのURL またはパス。
  • ContinueOnError (String):エラー発生後もインサートの実行を継続するかどうか。デフォルト値は'true' です。
  • IncludeInfoMessages (String):情報メッセージを出力に含めるかどうか。デフォルト値は'false' で、失敗に関する情報のみが表示されます。'true' に設定すると、成功したリクエストに関する情報も結果に含まれます。

PowerShell Cmdlets を使ってストアドプロシージャを呼び出すには、Invoke-QB コマンドレットを使用します。バックスラッシュは二重にエスケープする必要がありますのでご注意ください。

Invoke-QB -Connection $connection -Query "EXEC SendQBXMLFile @File='C:\\\\Path\\\\To\\\\QBXMLFile.qbxml', @ContinueOnError='true'"

ストアドプロシージャは以下の出力パラメータを返します。

出力パラメータ

ストアドプロシージャには以下の出力パラメータがあり、デフォルトでは失敗時のみ利用可能です:

  • RequestId (String):メッセージに関連付けられたリクエストID。
  • Severity (String):メッセージの重大度。
  • StatusCode (String):出力メッセージのステータスコード。
  • StatusMessage (String):処理内容の詳細を示すステータスメッセージ。

Invoke-QB コマンドレットは、ストアドプロシージャの呼び出し時にQueryResult PSObject を返します。上記の例では、結果がテーブル形式で表示され、上記のパラメータがカラムとして、一括インサートの各結果が行として表示されます:

RequestId Severity SatusCode StatusMessage
--------- -------- --------- -------------
2         Error    3100      The name "Opening Balance Equity" of the list element is already in use.
3         Error    3100      The name "Checking" of the list element is already in use.
4         Error    3100      The name "Savings" of the list element is already in use.
...

PowerShell でQBXML ファイルをQuickBooks Desktop にインポートする



QBXML ファイルのダウンロードが完了したら、QuickBooks にデータをインポートする準備が整いました。インポートを行うには、QBXML ファイルを保存したマシンにCData Cmdlets for QuickBooks をインストールし、QuickBooks Desktop をホストしているマシンにRemote Connector(Cmdlets のインストーラーに含まれています)をインストールしてください。

Cmdlets とRemote Connector を適切なマシンにインストールしたら、QBXML ファイルをQuickBooks Desktop にインポートできます。以下は、QBXML ファイルをインポートするサンプルPowerShell スクリプトです。同じ処理を行うための変数を対話形式で入力できるインタラクティブなPowerShell スクリプト(ImportQBXMLFile.ps1)をダウンロードして実行することもできます。

# $user = Remote Connector のユーザー名
# $password = Remote Connector のパスワード
# $server = Remote Connector の名前/アドレス
# $port = Remote Connector のポート(デフォルトは8166)
# $QBXMLFile = QBXML ファイルのフルパス(バックスラッシュは二重にエスケープ)

# Connect-QB 用のURL パラメータを構築
$URL = $server + ':' + $port

# QuickBooks Desktop に接続
$qbConn = Connect-QB -URL $URL -User $user -Password $password

# ストアドプロシージャを呼び出すクエリを構築
$query = "EXEC SendQBXMLFile @File='$QBXMLFile', @ContinueOnError='true'"

# ストアドプロシージャを呼び出して結果を格納
$results = Invoke-QB -Connection $qbConn -Query $query

この時点で、$results にはインポート結果のテーブルが格納されています。テーブルには、上記で説明したように、失敗したインポートのリクエストID、重大度、ステータスコード、ステータスメッセージのカラムが含まれます。失敗したインポートを管理するには、QuickBooks Desktop の会社データを編集して再試行するか、QBXML ファイルを修正するか、手動で更新を追加してください。

PowerShell でQuickBooks データを操作するには、CData Cmdlets for QuickBooks の30日間の無料トライアルサンプルPowerShell スクリプトをぜひお試しください。ご不明な点がございましたら、サポートチームまでお気軽にお問い合わせください。

始める準備はできましたか?

無料トライアルをダウンロード:

今すぐダウンロード

詳細:

QuickBooks Cmdlet