• sago

ダブルクォーテーションがないCSVファイルを作る

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関数 をうまく使いましょう。





サンプルファイル

サンプルファイルファイルがダウンロード出来ます。


閲覧数:332回0件のコメント

最新記事

すべて表示