孤毒の果て

成人後自閉症スペクトラム、アル中・双極性障害とも診断される診断された当事者ブログ。孤独な男。据え置きゲームを処分して趣味はカメラへと移行、ミニマル生活へ。

FileMakerで1行目にフィールド名付CSVファイルを書き出す方法

f:id:kotokunohate:20161107142824j:plain

標準のエクスポートだとフィールド名が無い

FileMaker標準のエクスポートはファイル形式が幾つかあり、Excelcsvが選択できるのだがcsvでエクスポートすると必要なフィールド名が1行目にない値だけのCSVファイルが書き出される。csvをエクスポートしたい人は何かしら別システムにデータをインポートしたいのだと思うがこの1行目が無いと紐付け作業等がかなり面倒である。今まで数年FileMakerを使ってきて無理だから諦めようと思っていたんだが、1行目にフィールド名付CSVファイルを書き出す方法がわかったので記事にしておく。

今まではわざわざExcelで書き出してからCSVにしていた。

今まではわざわざExcelで書き出してからCSVにしていた。面倒だが数分で終わるしいいか・・・。と思ってこの無駄な作業をずっと繰り返している人は多いのではないだろうか。それもこの記事を読めば解決する

今回のDBの仕様

f:id:kotokunohate:20161107143635j:plain CSV書き出しがメインなのでテーブル名やフィールド名は適当です。当然フィールドの値も適当。ダミーデータを作るのが面倒なので下記サイトで100行のCSVを作ってインポートしました。 f:id:kotokunohate:20161107143856j:plain www.mockaroo.com

インポート後はこんな状態 f:id:kotokunohate:20161107143943j:plain

これをそのまま標準エクスポートしてmac表計算ソフトnumbersで表示してみます。 f:id:kotokunohate:20161107144049j:plain

フィールド名のABCDEがありません。

1行目にフィールド名をつけれるスクリプトを作る

CSV1行目にフィールド名をつけるには俺の知る限りスクリプトしか今のところありません。なので作っていきます。

f:id:kotokunohate:20161107144831j:plain

4行目〜5行目解説

新規レコードを作りソートして空白のレコードを先頭、一番上に持ってきます。今回は昇順。 この空白レコードは後にCSVで書き出したときのフィールド名になります。ソートの理由は新規レコード作成は一番最後に作られるのでソートしています。

7行目〜11行目解説

先に作った空白レコードにフィールド名を設定していきます。注意:フィールド設定で入力制限がかかっているこれができない可能性があります。例えばフィールド名が電話番号で入力制限に数字になっていると、そこのフィールドには"電話番号"の文字列が入力できないのできませんので、このスクリプトの手法で行くならフィールド設計から変更しないといけない場合があり、そうすると今度は入力ミス、ヒューマンエラーが出る可能性もあります。

14行目解説

通常のエクポートです、CSV形式でエクスポートしてやります。 変数を使ってやれば書き出す場所の指定も可能!

17行目〜18行目解説

17行目はいるか微妙ですが、一応入れておきます。 18行目で4行目〜5行目で作ったレコードを消して終了。

スクリプトまとめ

かんたんに言うと1行目にフィールド名レコードを作り、エクスポートし終えたら、1行目のエクポートの時だけ必要だったフィールドは消す。やっているのはこれだけ。

完成ファイル

f:id:kotokunohate:20161107150720j:plain

今回のスクリプトで書き出したCSVを開いてみると無事1行目にフィールド名がつきました。ただソートをかけているので2行目以降は当然ソートされていますが、CSVをインポートして紐付けするシステムで並び順が〜・・・と言うのは見たことがないのであまり気にしてません。よくCSVを取り込むシステムは1行目のフィールド名を紐付けの為に利用して2行目からをインポートとするので、と言うか家の環境がそうなのでこれでおしまいデス。気になる人は応用して作ってみてください。

FileMaker Pro 15 スーパーリファレンス for Windows&Mac OS

FileMaker Pro 15 スーパーリファレンス for Windows&Mac OS