FileMakerGoとcsvその2

最終的には変数使えばいいのですが、分かりやすいようにテーブルを作ってCSVをインポートする仕組みを作ってみます。

他の方の受け売りですので、色々検索してみましょう。

テーブルを一つ作り、そこに1つグローバルフィールドを作成します。

このフィールドは、テキストを貼り付けるためのフィールドになります。

さらにもう一つグローバルフィールドを作成します。

これは、貼り付けたテキストから、取り込みたい行のデータを貼り付けるフィールドです。

CSVから1行ごとデータを貼り付けて処理していきます。

では続けて計算フィールドを作成し、

Substitute(1行抜き出したデータを貼り付けるフィールド;",";"¶")

と入力します。

「,」で改行するってことです。

こうしてあげると

貼り付けたCSVの1行が、改行されたテキストに変換されます。

例は「"」ダブルクォーテーションが残っていますので、どこかの段階でこれも取り除いてあげましょう。

Substitute ( 1行抜き出したデータを貼り付けるフィールド ; "\"" ; "" )でいいかと。

あとは1行づつ取り出せば目的の値が取り出せることになりますので、

これで上の例だと「0」が取り出せるはずです。同様に

行の数だけ計算フィールドを作成すると

これらの値を変数に取り込んで、取り込み先のテーブルの新規レコードとして登録、Loopで回せばcsvをFileMakerGoのみで取り込むことができるようになります。

こんなテーブルを作成し、レイアウトも作成しておきます。設定によってはテーブルを作成した時点で自動で作成されているかもしれません。できていればそれを使えばいいです。

ではスクリプトを作成してみましょう。

まず、ValueCount 関数で取り込みたいテキストの行数をカウントし、変数に保存しておきます。この行数分だけ処理を繰り返すってことです。

次にGetValue 関数を使い、1行ずつ抜き出す処理を作っていきます。

ここまでで

この状態になるはずですので、それぞれの値を変数に代入していきます。

保存したいデータは変数に入れたので、保存先のレイアウトに切り替えて、目的のフィールドに入力していきます。

処理が終わったら次の行に移り、これを行数分繰り返したいので

変数iに1を加えて、その値が行数よりも大きくなったらLoopを抜けます。

これを画面に作ったボタンに指定してあげれば、

無事、csvがインポートできるはず。

ただし、他で書いてますが、このままだと取り込む件数によっては非常に時間がかかります。2万件で1時間前後。

そのまま使いたければ、2000件前後のデータにしておいた方が無難です。