特集 ニュース コラム Plug-in・カスタム関数 関連製品・サービス 書籍
活用事例 コミュニティ・リンク 人材募集
 

FileMaker からFAXを送信する

FileMakerのデータベースに格納された送信先番号データを使ってFAXを送信する方法について解説します。(MacOSX10.3のみ)


はじめに

MacOSXではver10.3(Panther)からOSのデフォルトでFAX送信が可能です。
アドレス帳から宛先を選択することはできますが、どうせなら、手作業はしないで、FileMakerのデータベースに登録されているFAX番号に対して自動送信ができたらいいな、と思うでしょう。
MacOS9まで、FAXstfなどのアプリケーションとAppleScriptの連携などをして送信してきた方もいらっしゃるでしょう。
ここでは、MacOSXならではのターミナルを使った方法に挑戦してみたいと思います。



FAXの設定


システム環境設定の「プリントとファクス」の「ファクス」タブをクリックすると「このコンピュータでファクスを受信する」というチェックボックスがあるので有効にします。これでファクスを受信することができるようになりました。
次にプリンタ設定ユーティリティを起動します。
「表示」メニューから「ファクスリストを表示」選択してください。ファクスリストに「内蔵モデム」が表示されるはずです。この日本語表記があとでターミナルを使って処理をしたい場合に厄介なので、英語名で登録しなおします。

1)プリンタ設定ユーティリティでoptionキーを押しながら「プリンタを追加」します。
2)一番上のプルダウンリストから「詳細」を選択します。
3)装置を「modem」に設定します。
4)装置名を「faxmodem」などの英語にします。
5)装置のURIはそのままでOK
6)プリンタの機種をppdファイルを選択して設定するのですが、ppdファイルは以下の場所にあります。

/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Resources/ English.lproj/Fax.ppd
(ファイル拡張子を表示していない人はSystem->システム Library->ライブラリと表示されています。)
かなり奥深くにあるファイルなので、デスクトップなど使いやすいところにコピーすると楽かもしれません。

図1 プリンタを追加して、2)-6)までの設定をおこなったところ




この時点でターミナルからファクス送信が可能になります。

[Mac:‾]user$ lpr -P faxmodem -o phone=0312345678 hoge.pdf

のようにターミナルでタイプすると、hoge.pdfというファイルが上記の番号にファクス送信されます。
さて、ではこのコマンドをFileMakerから動かせるようにしましょう。

FileMakerのスクリプトを作成する


ScriptMakerから新規スクリプトを作成します。(スクリプト名:SendFax)

[エラー処理[オン]
#用紙サイズの設定をします
印刷設定[記憶する;ダイアログなし]
#PDFで保存させるよう記憶します
印刷[記憶する;ダイアログなし]

 

印刷スクリプトステップでは、紙にプリントするのではなく、PDFファイルとして保存させます。
PDFファイルに 保存させるには、プリントオプションを選択したときに、「PDFとして保存」を選択します。
ユーザのホームディレクトリにfax.pdfという名前で保存するようにしてください。

図2 FileMakerの印刷スクリプトステップで印刷オプションをクリックしたところ


さて、ここまででPDFファイルを作成することができますが、肝心の送信部分です。

FileMakerからAppleScript経由でコマンドを実行する


ここで、FileMakerから先ほどのlpr -P .....のようなコマンドを実行したいのですが、FileMakerのスクリプトからは直接指定ができないので、AppleScriptの力を借りることになります。FileMakerのデータベースのFAXNoというフィールドに送信先の番号がはいっているとします。ここでは

lpr -P faxmodem -o phone=[FAXNoフィールドの中身] ‾/fax.pdf


というコマンドを実行したいのですが、AppleScriptから実行するためには

do shell script("lpr -P faxmodem -o phone=[FAXNoフィールド] fax.pdf")

のような記述になります。
FileMakerのスクリプトには 「AppleScriptを実行」というスクリプトステップがありますから、このスクリプトステップに上記を実行してもらえばいいわけです。

さきほどのSendFaxスクリプトにAppleScriptを実行[] スクリプトステップを追加します。

[エラー処理[オン]
#用紙サイズの設定をします
印刷設定[記憶する;ダイアログなし]
#PDFで保存させるよう記憶します
印刷[記憶する;ダイアログなし]
AppleScriptを実行[]

 

AppleScriptで実行する内容はテキストで直接記述するか、「計算済みのAppleScript」を指定することができます。
ここではFaxNoフィールドの中身を埋め込んだコマンドを実行したいので、計算フィールドでコマンドを作成して、
「計算済みのAppleScript」を指定しましょう。コマンドの内容を記述した「Script」フィールドを作成します。

フィールド「Script」を追加 計算:計算結果=テキスト

" do shell script (""lpr -P faxmodem -o phone="&FAXNo&" ‾/faxpdf"")"


計算結果はFAXNoフィールドの中身が「0312345678」だとすると、

do shell script("lpr -P faxmodem -o phone=0312345678 ‾/fax.pdf")



のようになります。これでスクリプト作成はおしまいです。

複数のレコードに対して連続してFAX送信をしたい場合は、loopスクリプトステップを使って連続処理を行うとよいでしょう。

[2004/12/15]
[有限会社ジェネコム 村上ゆりか]

FMPro.jpについて |  利用規約 |  ポリシー |  お問い合わせ