[FileMaker][テキスト変換] 行と列を入れ替えるカスタム関数
CSV ファイルの行と列を入れ替える(transpose)オンラインツールを見つけた。
Online Transpose CSV Tool
https://www.convertcsv.com/transpose-csv.htm
このツールは便利だけど、大量の CSV ファイルをいちいちコピペして作業するのは大変だ。
そこで同じことを FileMaker でする方法をみつけた。行と列を入れ替えるカスタム関数が公開されているのだ。
(1)まず GetColumn というカスタム関数が同時に必要なので登録しておく。
カスタム関数は、FileMaker で「File > Manage > Custom Functions」から登録する。
以下のページからカスタム関数をコピーして使わせてもらう。そして Parameters に text、columnNumber、columnDelimiter を設定する。
FileMaker Custom Function: GetColumn ( text ; columnNumber ; columnDelimiter )
https://www.briandunning.com/cf/877
(2)同様の方法で、メインのカスタム関数である TransposeArray を登録する。コードは以下のページからコピーして使う。
FileMaker Custom Function: TransposeArray ( array ; columnDelimiter )
https://www.briandunning.com/cf/878
これでカスタム関数が使える状態になった(実は私はカスタム関数を使うのがこれが初めてだ)。
例えば以下のような | で区切られた表があるとする。
1|2|3
a|b|c
x|y|z
これを以下のように変換したい。
1|a|x
2|b|y
3|c|z
TransposeArray 関数は TransposeArray ( "入力", “区切り記号” ) のように使う。すなわち、今回は TransposeArray ( "1|2|3¶a|b|c¶x|y|z" ; "|" ) という関数を使えよい。
CSV ファイルの場合は区切りがコンマだったりするがこれも "|" の部分を "," に置き換えればいい。
入力内容、区切り記号、出力内容のフィールドを作ると、大量に作業するのも簡単だろう。
入力内容フィールド:
1|2|3
a|b|c
x|y|z
区切り記号フィールド:
|
これで Set Field [ table::出力内容フィールド ; TransposeArray { table::入力内容フィールド ; table::区切り記号フィールド ) ] というスクリプトステップを組めば以下のように出力される。
出力内容フィールド:
1|a|x
2|b|y
3|c|z