CData Software Blog

クラウド連携のCData Software の技術ブログです。

電子帳簿保存法に対応!UiPathでBoxへのファイルアップロードとメタデータ付与を自動化

2022年1月施行の電子帳簿保存法の改正により、会計帳簿や請求書、領収書など国税関係の帳簿書類を電子データで保存することが認められるようになりました。 ペーパーレス化により、業務の効率化や書類紛失の回避、テレワークの推進などさまざまなメリットが享受できます。 特にソフトウェアによる業務自動化の効果は絶大です。 既存のRPAツールなどを使うことでファイルの作成、更新、移動、メタデータの付与などを自動化させることができます。

そこで、今回はRPAプラットフォームUiPath とCData Box ODBC Driver を利用し、Box にファイルをアップロードし、さらにメタデータを付与するフローを作成する方法を紹介します。

CData Box ODBC Driver

UiPath はODBCドライバを介したデータベースインタフェースを持っており、簡単な設定でPostgreSQLMySQL などのデータベースを操作できます。

CData Software Japan が提供するCData Box ODBC Driverは、Box のWeb API へのアクセスをODBCインタフェースに変換し、複雑なAPIリクエストをSQL で操作できるようにします。 UiPath が持つデータベースインタフェースとCData Box ODBC Driver とを利用することで、UiPath とBox とのデータ連携を実現します。

シナリオ

今回実現するシナリオを以下に示します。 本シナリオは以下の3つのステップで構成されています。

  1. ファイルをアップロードする
  2. ファイルにメタデータテンプレートを適用する
  3. ファイルのメタデータを更新する

今回のシナリオで対象とするファイルの種類は契約書です。 メタデータテンプレートには以下の二つの項目があります。

  • 担当部門
  • ステータス

今回はアップロードしたファイルのメタデータ「担当部門」に、事前に入力した値を設定します。

フローの動作イメージ

フローの動作イメージを以下に示します。

1 フローを起動するとアップロードするファイルを選択するダイアログが表示されます。

2 ファイルを選択すると、設定するメタデータ「担当部門」を入力するダイアログが表示されます。

3 フローが完了するとBoxの契約書フォルダにアップロードしたファイルが追加されます。

4 アップロードしたファイルのメタデータを確認すると、「担当部門」に入力した値が設定されていることが確認できます。

今回は説明の都合上ファイルの選択とメタデータの入力は手動としましたが、UiPath ではこれらの操作も自動化が可能です。

事前準備

事前準備としてUiPath がインストールされている環境にCData Box ODBC Driver をインストールします。

CData Box ODBC Driverのインストール

CData Software Japan 社のCData Box ODBC Driver ダウンロードページにアクセスしてください。 ダウンロードページの[ダウンロード 評価版]をクリックすると必要事項入力画面が表示されます。

必要事項を入力し、[ダウンロード]をクリックするとドライバのインストーラがダウンロードされます。 ダウンロードしたファイルをダブルクリックするとインストーラが起動しますので、ウィザードに従ってインストールしてください。

接続設定

ドライバをインストールするとCData Box ODBC Driver のDSN構成画面が表示されます。 この画面では接続に関する各種設定を行います。 今回は、メタデータを取得できるようにするためにIncludeCustomField プロパティをTrue に設定してください。

特に認証情報を指定しない場合は埋め込みクレデンシャルによる認証が適用されます。 これは接続時にブラウザからBox にログインし認証トークンを取得する方法です。

[接続のテスト]を押下するとブラウザが表示され、Box のログイン画面が表示されます。 ログインに成功すると認証トークンがローカルフォルダに保存されます。 次回以降の接続はこのトークンが使用されるため、基本的には再びブラウザによる認証を行うことなく接続することができます。

UiPathでの準備

今回はUiPath の「フローチャート」としてフローを作成します。

Box への接続にはデータベースアクティビティが必要です。 デフォルトではデータベースアクティビティがありませんので、パッケージ管理からインストールします。

データベースアクティビティの追加

メニューの[パッケージを管理]をクリックするとパッケージ管理画面が開きます。 [すべてのパッケージ]からDatabase というキーワードで検索し、UiPath.Database.Activities を選択します。 [インストール]をクリックし当該パッケージをインストールしてください。

フローチャートの作成

今回作成するフローチャートを下図に示します。 図にはフローチャートのほか、各アクティビティの種類、インプットとアウトプットの変数をそれぞれ記載しています。

使用する変数の型は以下の通りです。 これらはあらかじめ作成してください。

続いてそれぞれのアクティビティのプロパティ値を設定します。

1. ファイルを選択

これは システム > ファイル にある[ファイルを選択]アクティビティです。

このアクティビティはファイル選択ダイアログを表示します。 [出力][選択されたファイル]プロパティの変数に、選択したファイルの絶対ファイルパスが格納されます。 今回はアップロードするファイルパスを示す変数filepath を設定します。

2. メタデータ入力

これは システム > ダイアログ にある[入力ダイアログ]アクティビティです。

このアクティビティは任意の文字列を入力するダイアログを表示します。 [出力][結果]プロパティの変数に、入力された値が格納されます。 今回はメタデータ「担当部門」の値を示す変数metadata_department を設定します。 [入力][タイトル]プロパティはダイアログのタイトルバーの文字列、[ラベル]プロパティはテキストボックスのラベルの値を設定します。 ここでは入力値が分かりやすいようにそれぞれ「担当部門」、「部門名」と設定しました。

3. Box に接続

これは アプリの連携 > データベース にある[データベースに接続]アクティビティです。

このアクティビティはデータベースへの接続を確立し、接続オブジェクトを生成します。 接続オブジェクトはフローの中でデータベースへのアクセスを行うときに使用します。 [出力][データベース接続]プロパティの変数に、データベースへの接続オブジェクトが格納されます。 今回はフローを通して使用する接続オブジェクトの変数connection を設定します。

接続先はインストールしたCData Box ODBC Driver です。 以下に接続設定の手順を示します。

アクティビティをダブルクリックして詳細を表示し、[接続を構成]をクリックします。

[接続設定を編集]ダイアログが表示されますので[接続ウィザード]をクリックします。

[Choose Data Source]ダイアログが表示されますので[Data source]から[Microsoft ODBC Data Source]を選択します。

[Data Provider]に自動的に「.NET Framework Data Provider for ODBC」が選択され、データソースの選択画面が表示されます。 [Data Source Specification][Use user or system data source]をチェックし、インストールしたデータソース[CData Box Source]を選択します。

設定が完了したら[OK]をクリックしてダイアログを閉じ、以下のように[接続設定][プロバイダー名]プロパティと[接続文字列]が設定されていることを確認してください。

4. ファイルをアップロード

これは アプリの連携 > データベース にある[クエリを実行]アクティビティです。

このアクティビティはデータベースに対してSQLクエリを実行します。 ここではUploadFileストアドプロシージャを実行してファイルをアップロードします。

[コマンドの種類]に「StoredProcedure」を設定します。 [出力][データテーブル]プロパティの変数にクエリの出力結果が格納されます。 ここにはあらかじめ定義したデータテーブル型の変数result を設定します。 [接続設定]ではデータベースの接続に関するプロパティを設定します。 今回は前のステップでデータベースに接続し、変数connection に接続が格納されていますのでこれを使用します。 [既存の接続]プロパティにconnection を設定してください。

続いてクエリを構成します。 ファイルのアップロードにはUploadFileストアドプロシージャを利用します。 以下はUploadFileストアドプロシージャのインプットパラメータです。

今回はBox の「契約書フォルダ」にファイルをアップロードするため、FilePath とParentID を指定します。 以下に実行するクエリを示します。

EXEC UploadFile FilePath = <アップロードするファイルのパス>, ParentId = <フォルダID>

フォルダID はBox画面でフォルダを開いた時のURL から取得できます。

今回、<フォルダID>には固定値として契約書フォルダのID を指定し、<アップロードするファイルのパス>は変数filepath の値を参照します。 クエリ内でパラメータを使用する場合は予めパラメータの設定を行う必要があります。

以上を踏まえてクエリの設定手順を示します。

アクティビティをダブルクリックして詳細を表示し、[クエリを編集]をクリックします。

クエリで使用するパラメータを設定するため、[パラメータ]をクリックします。

[パラメータ]画面が開きます。 [名前]にクエリパラメータ名、[型]にパラメータの型、[値]にパラメータの値をそれぞれ設定します。 今回は[名前]には変数filepath と同じく「filepath」、[型]にString、[値]に変数filepath を設定しました。 このようにクエリパラメータ名と変数が一対一で対応する場合は同じ名前にすることでパラメータの理解が容易になりますが、これ以外の場合では混乱を避けるために別の名前を付けることをお勧めします。

続いてSQL を記述します。 SQL 文は必ずダブルクォーテーションで囲んでください。 ParentId には契約書フォルダのID を固定値で、FilePath にはクエリパラメータを指定しています。クエリパラメータを指定する場合は以下のようにパラメータ名に@を付与してください。

5.ファイルIDを取得

これは プログラミング > データテーブル にある[行項目を取得]アクティビティです。

このアクティビティはテーブル形式でデータを保存するデータテーブルオブジェクトが保持している値を取得します。 前述の通り[クエリを実行]アクティビティの結果はデータテーブル形式の変数に保存されますが、 この[行項目を取得]アクティビティを使うことで、実行したクエリの結果から特定の値を取得できます。

Box にファイルをアップロードするとファイルID が付与されます。 UploadFileストアドプロシージャを実行するとアップロードされたファイルのID がクエリの結果として返ります。 ここではUploadFile が返すデータテーブルからファイルのID を取得します。

以下はUploadFileストアドプロシージャが返す値です。

このアクティビティはデータテーブル上の行と列を指定して値を取得します。 UploadFileストアドプロシージャはクエリの結果を示す「Success」、ファイルIDを示す「Id」の2つのカラムを持つ1行のレコードを返します。 そこで、[入力][列名]プロパティに「Id」、[行]プロパティに行オブジェクトであるresult.Rows[0] を設定します。 result.Rows[0] はクエリの結果が格納されているデータテーブル型の変数result の1行目(インデックスは0)を示しています。

[出力][値]プロパティの変数に指定した位置の値が入ります。 ファイルID を示す変数fileid を設定することで、この変数にクエリの結果から取り出したファイルID が格納されます。

6. メタデータテンプレートの適用

これは アプリの連携 > データベース にある[クエリを実行]アクティビティです。

ここではファイルに対してメタデータテンプレートを適用するAddMetadataTemplatestoFileストアドプロシージャを実行します。

基本的な設定方法は4.ファイルをアップロードと同様で、コマンドの種類、接続設定、SQLクエリをそれぞれ設定します。 今回はクエリの結果は使わないため[出力]の設定は不要です。

[コマンドの種類]に「StoredProcedure」を設定し、[接続設定][既存の接続]プロパティに変数connection を設定します。

以下に実行するクエリを示します。

EXEC AddMetadataTemplatesToFile FileId = <ファイルID>, Scope = <スコープ>, TemplateKey = <テンプレートキー>, TemplateValues = <メタデータの初期値>

今回、<スコープ>、<テンプレートキー>、<メタデータの初期値>には固定値を設定し、<ファイルID>は変数fileidの値を参照します。 詳細なクエリ構成方法については4.ファイルをアップロードのセクションをご覧ください。

クエリパラメータの設定内容を以下に示します。 ここでは変数fileid を同名のクエリパラメータ「fileid」として定義しています。

記述したSQLは以下の通りです。

メタデータの初期値は「フィールドキー1=値1, フィールドキー2=値2, ...」の形式で指定します。 スコープ、テンプレートキー、メタデータのフィールドキーの確認方法についてはこちらをご覧ください。

7. メタデータの更新

これは アプリの連携 > データベース にある[クエリを実行]アクティビティです。

ここではファイル情報が格納されたFilesテーブルに対してUPDATE文を実行してメタデータを更新します。

[コマンドの種類]に「Text」を設定し、[接続設定][既存の接続]プロパティに変数connection を設定します。

以下に実行するクエリを示します。

UPDATE Files SET <カラム名> = <値> WHERE Id = <ファイルID>

今回はメタデータ「担当部門」を更新するため、<カラム名>には担当部門カラムの名称、<値>には入力したメタデータが格納された変数metadata_department の値、<ファイルID>にはアップロードされたファイルのIDが格納された変数fileid の値を指定します。 詳細なクエリ構成方法については4.ファイルをアップロードのセクションをご覧ください。

クエリパラメータの設定内容を以下に示します。 ここでもクエリパラメータ名に変数名と同じ名前を使っています。

記述したSQLは以下の通りです。

メタデータカラム名の確認方法についてはこちらをご覧ください。

8. Boxへの接続を切断

これは アプリの連携 > データベース にある[データベースへの接続を切断]アクティビティです。

このアクティビティはデータベースへの接続を切断してリソースを解放します。 [接続][データベース接続]プロパティの変数に、切断する接続オブジェクトの変数connection を設定します。

動作確認

これでフローチャートの作成は完了です。 フローチャートを実行し、冒頭の動作イメージの通り動作するかご確認ください。 今回はファイルの選択とメタデータの入力は手動としましたが、UiPath でこれらの操作も自動化させることでファイルアップロードからメタデータ付与までの完全自動化が実現可能です。

おわりに

本記事ではUiPathとCData Box ODBC Driver を使ってBox にファイルをアップロードし、さらにそのファイルにメタデータを付与する方法を紹介しました。

CData Box ODBC Driver は30日間の評価版を無料でご利用頂けます。 UiPath のBox連携をご検討の方はぜひお試しください。

本記事についてのご質問、ご意見につきましてはサポートフォームからお気軽にお問い合わせください。

付録1. メタデータテンプレート詳細の確認方法

メタデータテンプレートの詳細情報はMetadataTemplatesテーブルで参照できます。 「クエリを実行」アクティビティなどで以下のSQL を実行してください。

SELECT DisplayName, TemplateKey, Scope, FieldsDisplayName, FieldsKey FROM MetadataTemplates;

このクエリを実行すると以下のような結果を返します。

DisplayName TemplateKey Scope FieldsDisplayName FieldsKey
契約書メタデータテンプレート template enterprise_12345 担当部門 field
契約書メタデータテンプレート template enterprise_12345 ステータス field1

AddMetadataTemplatesToFileストアドプロシージャの入力として必要なスコープ、テンプレートキー、メタデータのフィールドキーは上記結果から取得してください。

付録2. メタデータカラム名の確認方法

Filesテーブルのメタデータカラム名は、スコープ、テンプレートキー、フィールドキーから以下のように構成されています。

<スコープ>_<テンプレートキー>_<フィールドキー>

例えばスコープが「enterprise_12345」、テンプレートキーが「template」、フィールドキーが「field1」のときは以下のカラム名になります。

enterprise_12345_template_field1

スコープ、テンプレートキー、フィールドキーの確認方法は付録1. メタデータテンプレート詳細の確認方法を参考にしてください。