AppleScriptをビジネスで使う
日頃、AppleScriptのビジネス利用におけるサポートをする中で感じているのは、「AppleScriptって、誰がどんなことをするために使っているの?」という疑問を持っている人が多いことだ。「対応アプリケーションが少ない」「処理速度が遅い」と、Apple-
Scriptが登場した当初はユーザーのニーズに応えられないことも多かった。しかし現在では、質の高い対応アプリケーションがそろい、またPowerPCのおかげで処理速度が向上し、ビジネスでも使えるツールになってきた。実際、DTPの現場やインターネットを利用した業務アプリケーションでは広く使われ、業務の効率化に一役も二役も買っている。
Macで仕事をしていると、「めんどくさい単純作業」が多いことに気づくだろう。AppleScriptを使うと、面倒な作業はMacにまかせることができる。ただし、Apple-Scriptといっても立派なプログラム言語なので、本気でスクリプトを書こうとすると、文法やコマンドを覚えなくてはならない。ただでさえ忙しいのに、そんなことを覚えられるわけないよと決めつける前に、本連載を読んでほしい。
幸いにして、ビジネスで必要となるスクリプトのテクニックは、あまり多くはない。そこでこの連載では、難しいことは抜きにして、「そのまま使えるAppleScriptの部品」を紹介する。実際にアプリケーションの制御や連携をさせた簡単な事例を中心に話を進め、その中で「部品」として使うApple-
Scriptの機能を解説する。
ところでAppleScriptは、スクリプトを書くときに、英語でも日本語でも記述することができる。これをAppleScriptの表現形式(ダイアレクト)というのだが、この連載では、英語表現形式(英語ダイアレクト)を使用する。その理由は、(1)大半のアプリケーションが日本語ダイアレクトに対応していない、(2)日本語表現形式はいろいろな面で使いにくい、(3)AppleScitptユーザーに対する調査によると90パーセントの人が英語ダイアレクトを使っている―などからだ。
TOPへ
ファイルメーカーProをAppleScriptで操作
AppleScriptへの対応がきちんとしていて、ビジネスでもよく使われているアプリケーションの代表格がファイルメーカーProだ。
ファイルメーカーProを使うと、自分の思いどおりのユーザーインターフェースを持ったデータベースを作ることができる。しかも、初めのうちは簡単なデータベースにしておいて、自分の業務の広がりに合わせて、その内容を複雑にしたり規模を大きくしていくことができるのも魅力だ。ファイルメーカーPro自体もスクリプト機能を持っているが、これをAppleScriptと組み合わせることで、さらなる自動化を図ることができる。
最初に、ファイルメーカーProで作った顧客リストと、Eudora
Proを組み合わせた例を紹介しよう。これは、ファイルメーカーProで検索した結果を基に、それぞれの顧客にメールを送るというものだ。使用するアプリケーションはもちろん、ファイルメーカーPro
3.0とEudora Pro 3.0.2-Jの2本だけ。
データベースの個別データをメールしたい
Eudora Proなどの電子メールソフトを使って複数の人に同じ内容のメールを送信するためには、Eudora
Proの[To:]フィールドや[Bcc:]フィールドに宛先を並べておけばいい。ところが、ひとりひとりのメールの本文にそれぞれ違うデータを挿入して送るとなると、かなり面倒だ。
そこで、AppleScriptを使ってもっとスマートに解決してみよう。「ファイルメーカーProのレコードからメールアドレスとデータを取得して、そのデータを埋め込んだ文章を作成して、Eudora
Proで送信」というスクリプトを作成することにする。スクリプトを書いてデータベースのレイアウト上に[メール作成]ボタンを配置すれば、このボタンを押すだけで、現在選択されている顧客にそれぞれの情報を埋め込んだ文章を作成してメールを送信するといったことも可能になる。
今回の例では、お買い物ポイントという数値データを入れてメールを送ることにする(図1)。



図1 AppleScriptによる自動化のイメージ。
ファイルメーカーProのデータをEudora Proの送信メールに自動的に埋め込む
|
フィールド名
|
内容
|
タイプ
|
|
NAME_KANJI
|
氏名
|
テキスト
|
|
EMAIL
|
メール
|
テキスト
|
|
POINT
|
ポイント
|
数字
|
|
DATE_TORIHIKI
|
最新取引日
|
日付
|
表 サンプルデータベースのフィールド構成
サンプルとして簡単なデータベースを作成しておいた。このデータベースのフィールド構成は表のとおり。
今回はAppleScriptから制御することをテーマにしているため、レイアウトはどんなものでもいいのだが、派手なレイアウトを使ってみた(図2)。
図2 顧客の「お買い物ポイント管理」データベースのレイアウト。
必要なフィールドだけをリスト形式で表示している。
ここでは、「インターネット上のオンラインショップの顧客データベース」を想定している。買い物をすると「お買い物ポイント」を発行し、これがたまるとプレゼントを渡すことになっているとする。顧客ごとに、ポイントと最後に買い物をした日付をデータベースで管理する。最後に買い物をしたときから一定期間経過した顧客には、現在の「お買い物ポイント」と、今現在のおすすめ商品をまとめて電子メールで送る。
TOPへ
ファイルメーカーProからデータを取得する
ここでは、検索などをAppleScriptで制御することはせず、ファイルメーカーProだけでやってもらうことにしよう。AppleScriptは、その検索結果をEudora
Proに対してメールに書き出す処理だけしてくれればいい。
例えば、「最新取引が'97年2月の顧客に向けて、お買い物ポイントを通知するメールを出す」ためには、(1)ファイルメーカーProで最新取引が'97年2月のレコードを検索する、(2)AppleScriptを起動すると、自動的にお買い物ポイントを埋め込んだ内容のメールをそれぞれの人に対して作成して、キューに入れる―という作業になる。もちろんAppleScriptでも検索させることができるので、将来、検索条件の与え方が複雑になったときには、必要なスクリプトを書き加えればいい。
電子メールを作成するAppleScriptの処理の流れは、(1)現在の検索結果に含まれるレコードの数を取得する、(2)レコードの数だけループさせて(つまり同じ作業を繰り返し)、一つずつレコードの内容を読み込んで、メールを作成する―という手順になる。
ファイルメーカーPro上で、検索結果として表示されているレコードの数をカウントするためのスクリプトは、以下のように書けばいい。このスクリプトをScript
1とする。
tellapplication "ファイルメーカー
Pro"
setnRectocount of everyrecord ofwindow
1
end tell |
これで、「nRecという変数に、現在ファイルメーカーProの一番上にあるウィンドウのデータベースから検索されているレコード数を取得する」ことができる。ちなみに、nRecというのは勝手に付けた変数名なので、スクリプト内で識別できれば、どのような名前でも構わない。これは、ほかの変数についても同様だ(図3)。
図3 Script 1を実行すると、データベースに登録されているレコード件数を返す。
一番上の「結果」ウィンドウにある数がレコード件数
試しに、内容を見てみよう。上記のスクリプトの一番最後に、次の1行を追加する。
スクリプトを実行すると、スクリプト編集プログラムの「結果」ウィンドウに、ファイルメーカーProで検索済みのレコード数が表示されるはずだ。検索結果のレコード数と合っているかどうか確認しておこう。
これでレコード数を取得することができたので、後は1レコード目からnRecレコード目までループを繰り返してデータを取得すればいいわけだ。この部分のスクリプトScript
2は、
repeat withi from1
tonRec
tellapplication "ファイルメーカー Pro"
tellrecord i
setaName tocell "NAME_KANJI"
setaEmail tocell "EMAIL"
setaPoint to cell "POINT"
end tell
end tell
-- 取得したフィールドの内容を
-- ダイアログに表示する。
display dialog aName & return & aEmail &
return & aPoint
end repeat |
―となる。

図4 Script 2を実行すると、各レコードごとに結果を表示する
実行すると、図4のように1レコードずつ内容をダイアログに表示する。「OK」ボタンを押すと次のレコードを表示し、「キャンセル」ボタンを押すと処理を終了する。
ファイルメーカーProからデータが引き出せたところで、来月に続く。次回は、Eudora Proからこのメールを送信する。
|