レポートファイルの出力時に自動でバックアップを作成する 

ファイル操作 活用編

ここでは、販売明細書をレポートファイルとしてPDF出力を行う際に過去の出力済み販売明細書をバックアップを同時に保管する処理の作成方法を解説します。
レポート出力時にバックアップを自動作成することで、販売明細書は常に所定のフォルダに出力されるとともに過去の販売明細書ファイルも一ヵ所に蓄積されるようになるため、誤って古いファイルを削除してしまったり最新版がどれなのか分からなくなってしまったりという問題を防ぐことが可能になります。
この演習は、下記の前提に基づいて構成されています。

  • 出力用の販売明細データは構成済み
  • 任意のタイミングでボタン押下により販売明細書を出力
  • サーバーサイドコマンドを用いてPDFのエクスポートを実行
  • いつも同じフォルダに販売明細書のPDFファイルが自動出力される
  • 販売明細書が既定のフォルダに存在する場合のみバックアップを作成(存在しない場合は出力処理のみが実行される)

 

プロジェクトファイル
(作成バージョン:8.0.6.0)
report-backup_before.fgcp
report-backup_after.fgcp(実装済みプロジェクトファイル)

1.プロジェクトを確認する

サンプルプロジェクトを開いてテーブルやページの確認を行います。

手順1-1.テーブルとビューの確認

プロジェクトには販売会社の2つのテーブルと、それらを結合したレポート用販売データビューが存在します。

手順1-2.ページの確認

レポート出力ページには、2つのテキストボックスが配置されておりデフォルトの出力先とファイル名が入力済みとなっています。
その下にはレポートファイルをPDF形式で出力するためのボタンが配置されています。
また、出力されるレポートは販売明細書という名前で既にプロジェクト内に作成されています。

2.プラグインをインストールする

ファイル操作コマンドを使用するには、Forguncyにプラグインをインストールする必要があります。プラグインのインストール方法については、オンラインヘルプを参照してください。 

今回ご紹介するファイルの名前変更処理では、「ファイル操作コマンド(OperateFiles)」のインストールが必要となります。 

3.サーバーサイドコマンドの作成 

レポートファイルの出力処理を作成します。
今回は既に基本的なレポート出力処理のみを実装したサーバーサイドコマンドが実装されているので、それに追加する形で処理を実装します。

手順3-1.パラメーターの確認

ナビゲーションウィンドウ内のサーバーサイドコマンドから販売明細書のエクスポートを開きます。

[パラメーター]タブを開き、定義済みのパラメーターの確認を行います。 
パラメーター「出力フォルダパス」はレポートファイルを出力するフォルダのパスを、「出力ファイル名」には出力されるレポートファイルの名称を格納するのに使用します。
これらは画面上のボタンを押下した際に、画面に入力されているそれぞれの値が格納されます(詳細は結果確認用ページの確認の項で解説します)。

手順3-2.処理コマンドの追加

[コマンド]タブを開きます。
あらかじめレポートのエクスポートコマンドが実装されていますが、エクスポート処理より前に既存のレポートをバックアップとして保管するためのコマンドを追加していきます。 

手順3-2-1.同名ファイルの存在チェック処理の実装

レポートのエクスポートコマンドより上にフォルダー上のファイル取得コマンドを追加します。 
このコマンドを使用すると、指定したフォルダ内に存在するファイルの名称を配列の形で取得できます。 
バックアップファイルの作成は、指定のフォルダに既に同名のレポートファイルが存在する場合のみ実行します。
そのため、まずはこのコマンドを使用してレポートファイルの存在チェックを行います。 
走査対象のフォルダ指定と、取得したファイルの名称を保管するためのパラメーターを以下のように設定します。 

  • 「フォルダーのパス」欄に作成済みパラメーター「=出力フォルダパス」と入力 
  • 「結果を保存するパラメーター名」欄に新しいパラメーター「pFile」と入力 

繰り返しコマンドを追加します。
バックアップの必要性の有無は「指定のフォルダ内にあるファイルのフルパス」と「エクスポートされるレポートファイルのフルパス」が一致するかを調べることで判定します。
そのためまずは先のコマンドの「pFile」内に保管されている値の個数の分だけ繰り返し処理が行われるよう以下の設定を行います。 

  • 「繰り返し回数、または繰り返し配列」欄に前のコマンドで作成したパラメーター「=pFile」と入力 

手順3-2-2.条件分岐処理の実装

条件分岐コマンドを配置します。
取得したファイルのフルパスがエクスポートするレポートファイルのフルパスと一致した時のみバックアップ処理を行うよう、以下の条件指定を行います。 

  • 「変数」欄に繰り返しコマンドで繰り返し配列オブジェクト名に指定されている「=Item」と入力 
  • 「条件」に「=(等しい)」を選択 
  • 「値」欄にクスポートするレポートファイルのフルパスとなる「=出力フォルダパス&”\”&出力ファイル名&”.pdf”」と入力 

手順3-2-3.バックアップ処理の実装

バックアップ処理の定義を行います。

既存のレポートファイルの名前を変更するため、変数の設定コマンドを追加します。 
ここではバックアップとなるファイルの名称の生成を行います。 

今回、バックアップファイルの名称は「(既定の名称)_yyyymmdd.pdf」の形にして、いつ生成されたバックアップファイルであるかが一目でわかる名前になるように設定します。 

  • バックアップファイルの名称を保持する「変数名」欄に「bkFile」と入力 
  • 「変数値」で「値、または数式」を選択し 「=出力ファイル名&”_”&TEXT(TODAY(),”yyyymmdd”)&”.pdf”」と入力 

発見された既存のレポートファイルの名称を、作成した変数「bkFile」に格納したものに変更するためファイル名の変更コマンドを追加します。 
変更前と変更後のファイル名は以下のように設定します。 

  • 「ファイルのパス」欄に既存ファイルのフルパス「=出力フォルダパス&”\”&出力ファイル名&”.pdf”」と入力 
  • 「新しいファイル名」欄に「=bkFile」と入力 

バックアップのファイルはバックアップ用フォルダ「bk」の中に移動するよう、ファイルの移動コマンドを追加します。
フォルダ「bk」はサーバーサイドコマンドのパラメーター「出力フォルダパス」の直下にあることを想定しています。
また、コマンドが作動した段階でこちらに「bk」フォルダが存在しない場合は自動で生成されます。 

  • 「ファイルのパス」欄にバックアップファイルのフルパス「=出力フォルダパス&”\”&bkFile」と入力 
  • 「出力先フォルダーパス」欄に「=出力フォルダパス&”\bk”」と入力 

4.サーバーサイドコマンドをページに実装

本来はここでサーバーサイドコマンドをページから呼び出せるよう設定が必要ですが、今回の演習用プロジェクトファイルでは既に実装されています。
そのため、設定の確認のみを行います。
レポート出力ページを開き、「PDF出力」ボタンを選択した状態で画面右側のコマンドハイパーリンクをクリックします。

販売明細書のエクスポートコマンドが設定されていること、以下のようにパラメーターが設定されていることを確認します。  

  • 「出力フォルダパス」の値にページ上で「c:\fgc\export」と入力されている「=H2」セルが指定されている 
  • 「出力ファイル名」の値にページ上で「販売明細書」と入力されている「=H3」セルが指定されている  

5.デバッグを実行

プロジェクトをデバッグ実行します。

手順5-1.デバッグを実行する

リボンの[ホーム]>[デバッグ]>[開始]ボタン、またはForguncy Builderの左上にある▶ボタンを押下してプロジェクトをデバッグ実行します。

作成したページがブラウザで表示されます。

「c:\fgc\export」フォルダの中が空であることを確認後、「PDF出力」ボタンを押下します。
一回目にボタンを押下した際は、「販売明細書.pdf」が生成されます。 

この状態でもう一度「PDF出力」ボタンを押下すると、「販売明細書.pdf」の他に「c:\fgc\export\bk」フォルダが生成されます。
そしてその中に「販売明細書_yyyymmdd(ボタンを押下した年月日).pdf」ファイルが配置されていることを確認できます。 

Forguncyのコマンドについてもっと知る

Forguncyの開発スタートガイドやオンラインヘルプでは、今回使用したコマンドについてより詳しくご紹介しています。
こちらもぜひご活用ください。

>ノーコードWebアプリ開発ツール「Forguncy」

ノーコードWebアプリ開発ツール「Forguncy」

Forguncy(フォーガンシー)は複数のシステムと直接接続して参照・更新が行えるデータ管理機能と、Excel感覚でレイアウトができる画面デザイン機能を備えたノーコードWeb開発&運用プラットフォームです。基幹システムでは対応できず、仕方なくExcelやAccessで管理していた業務のサブシステム化を強力に支援します。

CTR IMG