CData ServiceNow ドライバで添付ファイルをダウンロード・アップロードする方法

by 浦邊信太郎 | 2023年01月23日

CData ServiceNow Drivers に添付ファイル(Attachment File)のダウンロード、アップロード機能が追加されました。本記事ではCData ServiceNow Drivers での添付ファイルのダウンロード、アップロード方法について説明します。

本機能が追加されたバージョンは22.0.8397です。これより前のバージョンをご使用の方はぜひこちらから最新版をダウンロードしてください。

ファイル情報の参照

はじめに添付ファイル情報の取得方法を説明します。添付ファイルの情報はsystem_attachment テーブルでアクセスします。

SELECT * FROM system_attachment;

特定のレコードに関する添付ファイル情報を取得する場合、以下のようにtable_sys_id 列をフィルタ条件としてレコードのシステムId を指定してください。

SELECT * FROM system_attachment WHERE table_sys_id = '9e90e36d2fd715107e47bed72799b65f';

レコードのシステムId はターゲットとなるテーブルのSysId 列で取得します。例えばincident テーブルのレコード番号「INC001」のシステムId は以下のクエリで取得できます。

SELECT sys_id FROM incident WHERE task_effective_number = 'INC001';

ファイルのダウンロード

添付ファイルのダウンロードにはDownloadAttachment ストアドプロシージャを使用します。ストアドプロシージャの基本的な使用方法は以下の通りです。

EXEC DownloadAttachment @SysId = '<レコードのシステムId>', @LocalPath = '<ダウンロードしたファイルを保存するパス>';

SysId パラメータにはファイルのシステムId を指定してください。ファイルのシステムId は上で説明したsystem_attachment テーブルのsys_id 列で取得できます。以下にEXEC 文によるSQL 例を示します。

EXEC DownloadAttachment @SysId = 'f1d072f52f6825107e47bed72799b6be', @LocalPath = 'C:\\Work\\test.txt';

CALL 文でのSQL例を以下に示します。

CALL DownloadAttachment('f1d072f52f6825107e47bed72799b6be', 'C:\\Work\\test.txt');

上記ストアドプロシージャを実行するとダウンロードしたファイルがローカル環境の C:\\Work\\test.txt として保存されます。


ファイルのアップロード

添付ファイルのアップロードにはUploadAttahment ストアドプロシージャを使用します。ストアドプロシージャの基本的な使用方法は以下の通りです。

EXEC UploadAttachment @TableName = '<テーブル名>', @TableSysId = '<レコードのシステムId>', @LocalPath = '<アップロードするファイルのパス>';

上記のクエリではアップロードするファイルのファイル名がそのまま添付ファイルの名前となります。もし添付ファイルの名前を別に設定する場合はFileName パラメータで指定します。

TableSysId パラメータにはレコードのシステムId を指定してください。DownloadAttachment ストアドプロシージャではファイルのシステムId を指定しますが、UploadAttachment ストアドプロシージャではレコードのシステムId が必要となりますのでご注意ください。

以下にEXEC 文によるSQL 例を示します。

ローカルのtest.txt をそのままのファイル名でアップロードする場合

EXEC UploadAttachment @TableName = 'incident', @TableSysId = '13834a742f6c21107e47bed72799b694', @LocalPath = 'C:\\Work\\test.txt';

ローカルのtest.txt をtest2.txt というファイル名でアップロードする場合

EXEC UploadAttachment @TableName = 'incident', @TableSysId = '13834a742f6c21107e47bed72799b694', @FileName = 'test2.txt', @LocalPath = 'C:\\Work\\test.txt';

CALL文を使用する場合はそれぞれ以下のようなクエリになります。

ローカルのtest.txt をそのままのファイル名でアップロードする場合

CALL UploadAttachment('incident', '13834a742f6c21107e47bed72799b694', '', 'C:\\Work\\test.txt');

ローカルのtest.txt をtest2.txt というファイル名でアップロードする場合

CALL UploadAttachment('incident', '13834a742f6c21107e47bed72799b694', 'test2.txt', 'C:\\Work\\test.txt');

上記ストアドプロシージャを実行するとincident テーブルの指定したレコードに添付ファイルが付与されます。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。