LoginSignup
2

More than 3 years have passed since last update.

FikeMaker18で追加されたファイル操作機能を使ってシーケンシャルログを書き出す

Last updated at Posted at 2019-06-25

初めに

ファイルメーカ18で新規追加されたファイル操作機能を使って
テキストログを作成するためのHow Toです。
ファイル操作に関するスクリプトステップ毎の機能紹介はあるのですが
シーケンシャルなログ書き出しについて、まとまった記事を見かけなかったため
整理してみました。
実はファイルオープンしっぱなしでどんどん書き込む場合、
あまり意識しないでもシーケンシャルに処理可能ですが、あまりそのような使い方はしないと思います。
複数のスクリプトから呼び出す等、ファイルのオープンクローズしながら同一ファイルに書き込むには
ちょっとだけコツが必要でした。

ファイル操作機能とは

言葉の通りファイルを操作するための機能です。
ファイルメーカ18より前は、テキストファイルの操作をするには
プラグインや外部のスクリプト等に頼る必要がありました。
今回の新機能で、ファイルメーカから直接テキストファイルを
操作することができるようになりました。

スクリプト(テキストログ作成)


エラー処理[オン]

#1.ファイル名指定
変数を設定 [ $PATH; 値:Get ( デスクトップパス ) & "log_" & Substitute ( Get( 日付 ) ; "/" ; "" ) & ".txt" ]

#2.ファイル有無確認
ファイルの存在を取得 [  「$PATH」 ; ターゲット: $FileExist ]

#3.ファイルがなければ新規作成
If [ $FileExist = 0 ]
 データファイルを作成 [  「$PATH」 ; フォルダを作成: オフ ]
End If

#4.ファイルOPEN ファイルIDを取得
データファイルを開く [  「$PATH」 ; ターゲット: $FileID ]

#5.エラーの場合終了
If [ Get ( 最終エラー ) ]
 現在のスクリプト終了 [  ]
End If

#6.ファイルサイズ(ファイルの最終位置)を取得
ファイルサイズを取得 [  「$PATH」 ; ターゲット: $FileSize ]

#7.ファイル位置指定
データファイルの位置を設定 [  ファイル ID: $FileID ; 新しい位置: $FileSize ]

#8.LOG書き込み内容生成 タイムスタンプ+(引数:LOGの内容)
変数を設定 [ $WriteData; 値:Get ( タイムスタンプ ) & " " & Get ( スクリプト引数 ) ]

#9.ファイル書き込み
データファイルに書き込む [  ファイル ID: $FileID ; データソース: $WriteData ; 書き込み: UTF-8 ; 改行を追加: オン ]

#10.ファイルCLOSE
データファイルを閉じる [  ファイル ID: $FileID ]

処理概要

1.ファイル名指定

 作成するファイル名です。私はデスクトップにlog_yyyymmdd.txtとして作成しました。

2.ファイル有無確認

 ファイルの有無確認です。

3.ファイルがなければ新規作成

 2で取得した条件をもとに、ファイルがなければ新規作成します。 

4.ファイルOPEN ファイルIDを取得

 操作するファイルをOPENします。

5.エラーの場合終了

 ファイルが操作中であったりすると、エラーが発生するためエラー判定します。

6.ファイルサイズ(ファイルの最終位置)を取得

 最終位置に書き込むため、ファイルの最後のバイト位置を取得します。

7.ファイル位置指定

 ファイルの最終位置に書き込み位置を指定します。

8.LOG書き込み内容生成 タイムスタンプ+(引数:LOGの内容)

 ログの書き込み内容を生成します。
 自分はタイムスタンプ+書き込み内容としました。

9.ファイル書き込み

 ファイルに8で生成した内容を追記します。

10.ファイルCLOSE

 最後にファイルをクローズします。

使い方

・ログを書き出したいスクリプトから、スクリプトステップ 「スクリプト実行」を設定する。
・引数に記入したいログテキストを記入してください。
スクリプトを実行し、デスクトップに、ファイルが作成されたら成功です!
2回目以降、スクリプト実行したら、ログが下に追記されていきます。

最後に

DBを作る必要なくスクリプトを作るだけのため、かなり使い勝手がいいです。
そのまま打ち込むだけで使えるのでぜひ試してみてください。

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
What you can do with signing up
2