DataSpider Servista(以下DataSpider)開発時のお悩みについて、サポートセンターでは日々お客様のお役に立てるよう奮闘しております。さらに、お客様の課題解決を早めるため、サポートWebサイトではFAQを日々更新しています。
FAQの中で最も人気があるのは、サンプルスクリプトを一覧公開している「サンプルスクリプト一覧」(FAQ No.47524)です。サンプルスクリプトについて、利用シーンに合ったサンプルスクリプトが見つかり、ダウンロードしてみたけど、意外と内容が難しい…!と感じたことはないでしょうか?
今回も特に人気のサンプルスクリプト「ブラウザからPDFファイルをダウンロードする方法」について、処理の流れ、作成のポイント、+αの情報を徹底解説しました!
※サンプルスクリプトのダウンロードや実際のFAQの確認等は、弊社のサポートをご契約のお客様のみ可能です。
前回のサンプルスクリプト講座については、以下からご確認いただけます。
記事の埋め込み
サンプルスクリプト「ブラウザからPDFファイルをダウンロードする方法」の概要
はじめに
「DataSpiderへブラウザからアクセスしてスクリプトを実行し、ファイルをダウンロードしたい」という場面は決して珍しくありません。
例えば、営業担当が顧客リストをブラウザ経由で取得する、ECサイトの管理画面で商品マスタや注文履歴情報を取得する、といったシーンが考えられます。
DataSpider ではHTTPトリガーと「ファイルシステムアダプタ」を組み合わせることでこれが簡単に実現できます。
ファイルシステムアダプタは任意のファイルをバイナリデータとして読み取ることが可能です。
次にその読み込んだバイナリデータを、バイナリ型のスクリプト出力変数に代入することで、スクリプトの出力データとすることが可能です。
そして、このスクリプトをブラウザから(HTTPトリガーから)起動すると、データはファイルとして出力することが可能となり、実際にファイルとしてダウンロードする、という次第です。
今回のサンプルスクリプトではPDFファイルの例ですが、同じ方法でファイルの種類を問わず(CSV,Excelファイル等でも)対応可能です。
では実際に、サンプルスクリプトの内容を確認してみましょう。
スクリプトの前提情報
- バイナリ型のスクリプト出力変数「PDFデータ」が存在します。
- 有償アダプタである「ファイルシステムアダプタ」が使用可能な状況です。
スクリプトの内容
上記のとおり、スクリプトは2ステップのみです。
「R_ファイルシステム」でPDFファイルのデータ読み込みを行い、「V_PDFデータ」では読み込んだデータをスクリプト変数「PDFデータ」に代入するという作業を行っています。
では、それぞれのアイコンの詳細を確認しましょう。
これは、「/data/KKAFAQ_057_ブラウザからPDFダウンロード」ディレクトリ内のデータを読み取るという設定です。
次に、「/data/KKAFAQ_057_ブラウザからPDFダウンロード」ディレクトリの内容をエクスプローラで確認してみましょう。
上記のように、「test.pdf」というPDFファイルが1つだけあります。
そして変数代入アイコン「V_PDFデータ」の内容を確認すると、「R_ファイルシステム」アイコンの列「data」の内容をそのままバイナリ型のスクリプト出力変数「PDFデータ」に代入していることがわかります。
ただ、ここでお気付きの方もいらっしゃるかもしれません。
「/data/KKAFAQ_057_ブラウザからPDFダウンロード」ディレクトリに複数のファイルがあったらどうなるの?と。
その場合、全てのファイルは順を追って読み込まれますが、スクリプト変数に代入されるのは最初に読み込まれた1件目のファイルになります。
しかしながら、目的とするPDFファイルがその1件目になる保証はどこにもありません。
従って、1ファイルだけ配置してあるディレクトリを準備しておくようにしましょう。
サービス登録について
ブラウザからこのスクリプトを実行するためにはHTTPトリガーから起動することになりますが、HTTPトリガーで起動するためにはまず、サービス登録という作業が必要になります。
では、サンプルスクリプトをサービス登録する部分を見てみましょう。
サービス登録
1. デザイナから「ファイル(F)」-「プロジェクトをサービスとして登録(D)」を選びます。
2. サービス名「root@KKAFAQ_057_ブラウザからPDFをダウンロード」として「次へ」を押します。
3. 以下の画面が出ましたら「完了」を押します。
4. サービス登録が完了しました。
5. 「マイサービス」を確認すると、サービス登録されていることがわかります。
サービス登録する意味と留意点
サービス登録という作業は、一般的なプログラミング言語でいうと「コンパイル」に相当する作業です。
デザイナで閲覧・編集できるプロジェクト・スクリプトがソースファイルであるとすれば、サービス登録されたプロジェクト・スクリプトは、コンパイルされた実行用のプログラムであるとイメージしてください。
各種トリガーやScriptRunnerからスクリプトを起動する場合、この「サービス登録」された、いわば「コンパイル済み」のプログラムを呼び出すことになります。
そのため、デザイナでスクリプトを修正した場合にはサービス登録を再度実施しないと各種トリガーやScriptRunnerから実行したプログラムが古い内容のままで実行されますので注意しましょう。
HTTPトリガーの設定内容について
サービス登録が終わりましたら、次にHTTPトリガーの設定に入ります。
HTTPトリガーの設定
1.「マイトリガー」から「新しいHTTPトリガーを作成する」を押します。
2. HTTPトリガーの設定で以下の通り設定し「次へ」を押します。
■「ファイルとして出力」にチェックする意味
- 「ファイルとして出力」にチェックしないと、PDFデータがファイルとして渡されず、ブラウザ上で文字化けしたテキストとして表示されてしまう場合があります。
- 従って、ブラウザに対してファイルをダウンロードさせたい場合には必ず「ファイルとして出力」にチェックしましょう。
3. 実行内容の設定でサービス・スクリプトを選択したうえで、スクリプト出力の値として「${trigger.outputData}」を入れます。
上記の後に「完了」を押すとHTTPトリガーの定義が終わります。
4. HTTPトリガーをブラウザから起動してみると、PDFファイルがダウンロードされ、PDFファイルを開くと「TEST」という文字列が確認できます。
■${trigger.outputData} について
「${trigger.outputData}」は値の箇所で青い右矢印を押すと「高度な操作」が表示され、ここにあるHTTPトリガー変数「出力データ」を押しても入力できます。
スクリプト出力の「値」はデフォルトで未定義(空白)になっているため、スクリプトからのデータ出力を行う際には必ず「${trigger.outputData}」を値に入力する作業を忘れないようにしましょう。
入力し忘れると、ブラウザからHTTPトリガーを実行してステータスとしては正常実行になるものの、ブラウザ側に何も応答がない、といったことになってしまいます。
まとめ
PDFファイルを読み込み、ブラウザでダウンロードさせるのに必要なスクリプトは非常にシンプルではありますが、これを実際に稼働させる際にはいくつか注意すべき点があったことがお分かりいただけるかと思います。
以下に4つのポイント・注意点をまとめます。
■ポイント・注意点
-
1.「ファイルシステム読み取り処理」アイコンではファイル単位の指定ではなく、ディレクトリ単位の指定であり、そのディレクトリには1ファイルが存在する状況である必要があります。
※複数のファイルが存在すると、変数代入に際して意図するファイルが代入されるとは限らないため。
-
2.作成したスクリプトをトリガーから起動させるためには必ずサービス登録が必要です。
※サービス登録は「コンパイル」に相当する作業となります。デザイナで閲覧・編集するスクリプトをソースコードに例えると、サービス登録されたスクリプトはコンパイル済みの実行プログラムに対応します。
-
3.HTTPトリガーを設定する際、ファイルをダウンロードさせる場合には必ず「ファイルとして出力」にチェックします。
※チェックしていない場合、PDFファイルのバイナリデータが文字化けしてブラウザの画面に表示されることがあります。
-
4.HTTPトリガーのスクリプト出力の「値」はデフォルトで未定義(空白)となっていますが、必ず「${trigger.outputData} 」を入力しましょう。
※この入力が漏れていると、スクリプトそのものが正常に実行されてもブラウザ側に何も渡りません。
最後に、PDFに限らず、任意のファイルをバイナリデータとして読み込み、ブラウザを通してユーザに渡したい場合にはHTTPトリガーと「ファイルシステムアダプタ」を組み合わせることで実現が可能となります。
実際、DataSpiderで作成したCSVファイルやExcelファイルをブラウザ経由でユーザに渡したい、といったケースは珍しくないと思います。
「ファイルシステムアダプタ」は冒頭でご案内したとおり、有償のオプションアダプタとなっておりますので、まだご契約でないお客様はこれを機に導入をご検討してみてはいかがでしょうか。
また、アダプタ導入に際して事前にアダプタ検証を行うことも可能です。
ご要望ございましたら、ぜひ以下のフォームよりお問い合わせください。
<DataSpiderお問い合わせフォーム>
執筆者情報:
新宮 英之
2006年中途入社。
DataSpider ServistaやHULFT Square等DI製品のサポート業務を担当。
趣味は講談。(講談教室に通っています。)