0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【スケジューラ】ファイルを操作するタスクを作成してみる

Last updated at Posted at 2024-01-10

今回は、Sharperlight スケジューラを利用してファイルのコピーやファイルの一覧をファイルに書き出したりしてみようと思います。

下図のようなフォルダ構成を利用します。
image.png
また、それぞれのフォルダにはこのようなファイルが入っています。
image.png
このフォルダおよびファイルにスケジューラのタスクからアクセスしてみようと思います。

フォルダのセキュリティ

Sharperlightは通常、アップリケーションサーバーにインストールされ運用されます。そこでアプリケーションサーバーのフォルダになんら制限もなくアクセスを許すのはセキュリティ上問題があります。
よって、Sharperlightではサイトセットアップを利用し、アクセスを許可するフォルダを登録できるようになっています。早速設定しましょう。
Sharperlightアプリケーションメニューからサイトセットアップを起動します。
ツリービューからプロダクトの設定システムを選択します。
プロダクトの設定オプションが右側に表示されます。一番下のオプションセキュリティで保護されたフォルダーに今回アクセスしたいフォルダーのパスを指定します。複数ある場合は、|パイプ記号で連結します。
image.png
サイトセットアップダイアログを閉じるボタンで閉じます。
Sharperlightサービスを再起動し、変更を適用します。

スケジューラタスクの作成

Sharperlightアプリケーションメニューからスケジューラを起動します。
image.png
新規ボタンでタスクの作成を開始します。
image.png
一般タブでは、コードグループおよび説明を入力します。
image.png
アクションタブに移動し、実行したい処理をここに定義します。

ファイル一覧のCSVへの書き出し

今回は、C:\QiitaSampleTemp\以下の全ての子フォルダをチェックし、全てのファイルの一覧表をCSVファイルとして作成してみます。同時に全てのファイルをC:\QiitaSample\フォルダにコピーしてみます。
新規アイコンでアクションを追加します。
使用可能なアクションの一覧が表示されるので、ここではクエリの組み合わせを選択します。
image.png
クエリの組み合わせの設定を行います。クエリの組み合わせは、forループのような働きをします。
ここで定義するクエリによって返されたデータセットから一行ずつ次のアクションへ値を渡すことができます。
では、早速クエリを編集ボタンでクエリの作成を開始します。
image.png
お馴染みのクエリービルダが起動します。モード概要レポート製品システムを選択します。
image.png
テーブルには、ファイルの一覧を選択します。
image.png
フォルダが必須フィルターとして表示されます。フォルダにはアクセスしたいフォルダを選択します。
image.png
サブフォルダへのアクセスを確実にするため、もう一つの必須フィルターであるサブフォルダーYになっていることを確認します。
image.png
次に、選択リストから以下のものを出力領域に指定します。
image.png
プレビューボタンでクエリを試行してみます。
image.png
ファイル情報が返ってきます。一番最初の行は不必要なのでクエリから除外します。クエリに戻るボタンでクエリ定義に戻ります。
image.png
選択リストよりサイズをフィルター領域にドラッグ&ドロップで設定します。
条件には0より大きいを指定します。
image.png
もう一度プレビューボタンでクエリを試行してみます。一番最初の不要な行は除外されました。
image.png
更に、このクエリでは下記の出力アイテムのみ残し、その他のアイテムは削除します。
image.png
クエリを試行するとこのようなデータセットが返されるようになります。
image.png

これでクエリは完成、このデータセットから一行ずつ次のアクションにパラメータとして値を渡すことになります。
OKボタンでクエリを保存すると、アクションタブに戻ります。
新規アイコンで新しいアクションを追加します。
先に定義したクエリの組み合わせアクションには、ループを終了させるための対となるクエリの組み合わせ終了アクションが必須となります。先に追加しておきます。
image.png
image.png
では、クエリの組み合わせアクションで取得したデータセットを一行ずつ処理する核となるアクションを定義します。新規アイコンで新しいアクションを追加します。クエリの組み合わせアクションとクエリの組み合わせ終了アクションの間に定義することとなります。
今度はクエリアクション使用します。
image.png
クエリの編集ボタンでクエリを定義します。
image.png
クエリのフィルターは前回と同じになります。
image.png
ただし、今回はフォルダーフィルターに先のクエリの組み合わせアクションで得たフォルダー名を渡すようにします。フォルダーフィルターの右端に表示されている一意の参照名@フォルダーを利用します。
image.png
その前に選択リストから以下のアイテムを出力領域に設定します。
image.png
OKボタンでクエリを保存します。
クエリのパラメーターフォルダー=と記入します。これは先ほどのクエリのフォルダーフィルターの参照名を表しています。フォルダーフィルターに値を渡すという意味です。
image.png
渡す値は、先のクエリの組み合わせアクションで得たフォルダー名なので、右端の参照ボタンで検索し設定します。
image.png
OKボタンで設定を完了します。
image.png
次に、このクエリの結果をCSVファイルに書込みます。その設定は右側にあります。
image.png
このような設定になります。追加チェックボックスは、データを同じファイルに追加するという意味になります。
image.png

ファイルのコピー

ファイルのコピーアクションを追加します。
image.png
そしてファイルおよびコピー先を以下のように設定します。先のクエリの組み合わせアクションの戻り値を利用します。
OKボタンでアクションを保存。
image.png

これで核となるアクションの定義も完了しました。
OKボタンでタスクを保存します。
image.png

尚、サイトセットアップのセキュリティで保護されたフォルダーオプションに、C:\QiitaSampleCopyフォルダも追加します。
image.png

スケジューラタスクの検証

右クリックメニューから実行を選択します。
image.png
エラー等が表示されなければ正常です。
早速、作成されているはずのファイル一覧 FileList.csvを探してみましょう。
確認できますね。
image.png
下図のような日本語の列見出しがそのままCSVファイルに出力されますが、テキストエディタ等で開いた場合に列見出しが文字化けしている場合があります。
image.png
その場合はこのエンコーディングオプションで対応可能です。
image.png

更にC:QiitaSampleCopyフォルダを見てみます。ファイルがコピーされているのがわかりますね。
image.png

あとがき

今回はSharperlightのスケジューラを利用してファイル一覧を作成したり、ファイルをコピーしてみました。
スケジューリングを利用して行うような作業ではありませんが、数多くある機能のうち、このような使い方もできるのだなということがお伝えできればと思いました。
では失礼します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?