このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

ファイルメーカでレコード別にデータをエクスポートしたい

発言者:Weasel
( Date Sunday, April 22, 2001 20:29:31 )


ファイルメーカーを使い、300ページほどのHTMLファイルを
制作しようと試みています。方法としては

1 情報フィールドをフィールドを下記の通り作成
  「会社名」「住所」・・・情報フィールド
  「HTML」・・・・・・情報フィールドを含んだHTMLテキストを
              形成する計算フィールド
  「ファイル名」・・・・・出力されるHTMLファイルのファイル名

2 「HTML」フィールドの中身をエクスポートし、ファイル名に
  「ファイル名」フィールドの値を利用する

といった感じです。これをファイルメーカーの基本機能(スクリプト)
で行おうとしたら、エクスポートの時に対象レコード全てが出力される
ため、どうもうまくいきません。どうすればよいか、アドバイス願います。

今井真人 さんからのコメント
( Monday, April 23, 2001 07:06:34 )

私がよくやっている方法としては、テキストファイルに書き出しを
します。それからページ更新用の秘密のページのテキストフィール
ドに貼り付けて、Submitします。後はPerl-CGIで自動的にページ
を一括して作成します。

ショージ さんからのコメント
( Monday, April 23, 2001 08:58:52 )

ファイルメーカーだけでやるのはしんどいので、僕はPerlかjgawkを
使います。

Weaselさんのデータの場合は、1行のデータで処理が出来そうですか
ら、jgawkを使うのが便利です。Macintosh版のjgawkとGUIは山下巌
さんが配布されていますので、まずは以下のURLを参照して下さい。

 http://www.imasy.or.jp/~iwao/

手に入れたら、まずはファイルメーカーのデータをタブ区切りでエ
クスポートします(CSVでもいいけど、僕はtabが好き)。HTMLの加
工はjgawk側でやりますので、HTMLフィールドは必要ありません。

データは以下の様な形にします。

ファイル名<TAB>会社名<TAB>電話番号<CR>

ここでjgawkのエディタを利用して、スクリプトを書きます。一番
簡単な方法で書きますので、あとはawkについて勉強をしてみてく
ださい。

BEGIN { FS = "\t" }
{
f = sprintf ("%s\.html", $1)
printf("<HTML\r") >>$f
printf("<HEAD>\r") >>$f
printf("<TITLE>%s</TITLE>\r", $2) >>$f
printf("<BODY>\r") >>$f
printf("会社名:%s<BR>\r", $2) >>$f
printf("電話番号:%s<BR>\r", $3) >>$f
printf("</BODY>\r") >>$f
printf("</HTML\r") >>$f
}

awkでは1行がファイルメーカーの1レコードと同じ扱いで、フィー
ルドの区切りは自分で指定することが出来ます。

最初の1行目がフィールドセパレータ(FS)の設定で、\tはタブを
指しています。あとはデータを埋め込んでいくだけです。

ファイル名は一番最初のフィールドだから$1に、あとは会社名が
$2、電話番号が$3に入ります。すべての行は$0に格納されていま
す。

printfでフォーマットしながら、ファイル名にリダイレクト>>し
てやれば、ファイルの書き出しが行われます。

ファイルが書き出される先は、jgawkの設定(WORKフォルダ)で決
めることが出来ます。

便利なのでお試し下しさい。

→  山下巌さんのホームページ

Weasel さんからのコメント
( Monday, April 23, 2001 14:59:07 )

みなさま、ありがとうございます。

ホントは私もPerlでやりたいんですが、今回は検証している時間が
ないので、使い慣れているファイルメーカーを使用した訳です。

今井真人様
 Perl-CGIを利用する方法なら、私ならファイルメーカーの
 CDMLを利用します。ただ、それだと出力されたHTMLファイルを
 保存する手間(「コマンド+S」「ファイル名入力」「保存ボタン」)
 が多いので、あきらめたわけです。

ショージ様
 JGAwk for Macintoshというものの存在すらしらなかったので
 大変参考になりました。ただ、MacPerlのインストールに
 とまどっている私の技術知識では、ちょっと難しいです。

結果としましては、
 1 ファイルメーカーで一括に出力する際、各ページのHTMLのファイル
   名を入れておく
 2 一括で出力
 3 「Jeditスーパーマニュアル」という参考文献にあったAppleScript
   を利用して、出力されたテキストファイルを分割する
 4 あとは手作業で微調整

という方法を選択しました。

ほんとは、ファイルメーカーとJeditをAppleScriptで制御して、なんて
方法が望ましいのですが、技術力のない私には無理です。

みなさま、本当にありがとうございました。下は今回使用した
参考文献の紹介ページです。

→  Jeditスーパーマニュアル オフィシャルガイド

みうら さんからのコメント
( Monday, April 23, 2001 16:37:10 )

既に話題が終了したようですが...

私は「File Toolbox Plug-In」というプラグインを利用しております。
以前はファイルメーカーのスクリプトに AppleScript を記述し、1レコード
づつ書き出していたのですが、書き出しスピードがネックでして(私が下手な
だけかも...)今は上記プラグインばかり使用しております。

私が下手な説明を書くよりは付属のサンプルをご覧になった方が手っ取り早いので

→  Protolight Software

Weasel さんからのコメント
( Monday, April 23, 2001 16:58:10 )

みうらさん、ありがとうございます。
だいたい、こんな感じのものを探していたのです。

残念ながら、今回の仕事は終わってしまいましたが
今後も同じような作業が発生すると思いますので、
勉強したいと思います。

Weasel さんからのコメント
( Monday, April 23, 2001 17:00:24 )

失礼しました。

× みうらさん
○ みうら様

申し訳ございません。

Weasel さんからのコメント
( Thursday, April 26, 2001 12:27:24 )

CSVからHTMLを出力するソフトがありました。

→  Text2HTML