FileMaker から出すCSVファイルはダブルクオーテーション(“”)があります。
しかし、連携するシステムの都合で不要な時があります。
そういう場合には集計の一覧とTextEncode関数を使えば自由なフォーマットにすることが出来ます。
この記事のゴール
FileMaker から出力されるCSVファイル
"1","aaaaa0001","ブラック","21","60","15"
"2","aaaaa0002","ホワイト","36","35","52"
"3","aaaaa0003","イエロー","87","73","91"
今回作りたいCSVファイル
1,aaaaa0001,ブラック,21,60,15
2,aaaaa0002,ホワイト,36,35,52
3,aaaaa0003,イエロー,87,73,91
今回のデータ
これをダブルクオーテーションの無いCSVにします。
まず1行のデータを作成する
計算フィールドで書き出したいフィールドをカンマ(,)で繋ぎます。
テキスト1 & "," &
テキスト2 & "," &
テキスト3 & "," &
数字1 & "," &
数字2 & "," &
数字3
そうすると
1,aaaaa0001,ブラック,21,60,15
こんな結果になります。
複数行のデータを作成
それを集計フィールドの一覧の設定にすると
対象レコード分が改行区切りで繋がります。
1,aaaaa0001,ブラック,21,60,15
2,aaaaa0002,ホワイト,36,35,52
3,aaaaa0003,イエロー,87,73,91
4,aaaaa0004,ブルー,31,65,55
5,aaaaa0005,オレンジ,11,64,34
6,aaaaa0006,イエロー,2,37,66
7,aaaaa0007,グリーン,9,55,3
8,aaaaa0008,ホワイト,54,9,3
9,aaaaa0009,グリーン,2,36,46
10,aaaaa0010,オレンジ,5,7,58
11,aaaaa0011,オレンジ,63,15,44
12,aaaaa0012,ブラック,40,22,26
13,aaaaa0013,パープル,32,44,28
ここまでのフィールド定義
CSVのヘッダ情報を追加
そして、FileMaker のCSVファイルはヘッダ(項目名)が無いので追加してみます。
※用途によっては不要
Substitute (
GetFieldName ( テキスト1 ) & "," &
GetFieldName ( テキスト2 ) & "," &
GetFieldName ( テキスト3 ) & "," &
GetFieldName ( 数字1 ) & "," &
GetFieldName ( 数字2 ) & "," &
GetFieldName ( 数字3 )
; Get (レイアウトテーブル名) & "::" ; "" )
& "¶" &
s全体行
GetFieldName関数の結果は今回の例だと「csv書き出し::テキスト1」を返します。「csv書き出し::」の部分は不要なのでSubstitute関数で消しています。
そして、集計フィールドの一覧に設定しているフィールドを最後に結合しています。
これで、目的のCSVファイルの中身は完成しました。
データ的には下記のようになっています。
テキスト1,テキスト2,テキスト3,数字1,数字2,数字3
1,aaaaa0001,ブラック,21,60,15
2,aaaaa0002,ホワイト,36,35,52
3,aaaaa0003,イエロー,87,73,91
〜〜省略〜〜
このフィールドを「フィールド内容のエクスポート」スクリプトステップで書き出しても良いです。
ですが、書き出したファイルがUTF8になってしまいます。
今回はそこも指定してみます。
CSVファイルの実体を作成
TextEncode関数で下記のように書くとShift_JIS(シフトジス)で改行コードはキャリッジリターン + ラインフィード (Windows 標準)のテキストファイルを作ることが出来ます。
計算フィールドの計算結果をオブジェクトにします。
TextEncode ( cテキストファイル化ヘッダ追加 ; "shift_jis" ; 4 )
他の文字コードも設定できるのでヘルプを確認して下さい。
この結果、「shift_jis.txt」というファイルが出来上がります。
書き出す時に指定しても良いのですが、せっかくなので、計算フィールドでファイル名も指定します。
Base64Decode ( Base64Encode ( cテキストファイル化 ) ; "完成.csv" )
この様に指定するとオブジェクトフィールドのファイル名を指定することが出来ます。
これで完成です。
フィールド定義(完成)
まとめ
今回はダブルクオーテーションの無いCSVファイルを作りましたが、応用すると様々なファイルを作れるはずです。
他のシステムと連動する場合に文字コードや改行コードを指定のものにする場合があります。その時はTextEncode関数 をうまく使いましょう。
サンプルファイル
サンプルファイルファイルがダウンロード出来ます。
Comments