![]() |
|
|
|
久々ですが、、今回は限定されてしましますが有名なメーラEudoraのAppleScriptを紹介したいと思います。 殆どのメーラには「アドレス帳」といって他人の個人情報を記入する所があると思うのですが、アドレス帳を持つアプリケーションは沢山ある為データを手作業で統一させるのはちと辛い物がありますね。 そこをAppleScriptでどうにかしよう、、ということで今回のやりダマはEudoraのアドレス帳です、。 |
| Eudoraはこんな感じで扱っている、、。 | |||||
さて、今回あつかうアドレス帳は↓です、 左側は「nickname files」と「nickname」を、右側は「nicknameの各要素」をあらわしています。 要素の名前などはそのフィールド内に記述してある通りです。 |
|||||
![]() |
|||||
そして上記をスクリプトで現したのが下となります。 nickname files は、上記の例では「テストフォルダ」が「nickname file 2」となり、nickname は「nickname 0」となっています。 選択している所をスクリプトで現すと nickname 0 of nickname file 2 もしくは、nickname "nickname"となっています。 上から順に1ではなく、0から始まっているんですね。 |
|||||
|
|||||
このスクリプトは全ての欄を埋めてある場合は良いのですが、field "〜〜" で指定した所が空の場合はどうやら文字化けしてしまっているようですね、、困りました。 実はこのfield "〜〜" は、raw notes でも内容が求められるようで、、 field "name" / "address" / "phone" / "fax" の部分はraw notes で返ってきた値のみを求めた方がよさそうですね。 さて、rawnote をどうやって処理して行きましょうか? |
| スクリプトは頭の体操? | |||||
rawnoteの返値は全てが埋まっている場合は"<name><address><phone><fax>備考"といった形で記入されていない所は返ってきません、つまりname、phone、fax、備考は記述が有るが、addressに記述がない場合の返り値は"<name><phone><fax>備考"という形です。 この記述されているname、phone、faxならばfield "name"などで読み込んでんでよさそうです。 要するにrawnoteに、何が含まれていて、何が含まれていないのか?を判定してからfieldでrawnoteの各項目を読み込みましょう、、。 ということでその処理が下になります。 |
|||||
|
|||||
はい、、演算子が出てきました、、その名も「contains」くんです。 実に簡単な処理ですが、見た目が長いです、、笑。 このcontainsの拡張子は僕は覚えてはいませんでしたが、「何かが含まれているか?」という演算子が有る事だけを覚えていたので過去にこのサイトでも紹介したリストから一番良いと思われる演算子を探して使用しました、 (演算子も沢山あるので必要になった時に探せばOKでしょう、、良く使うのは覚えてられるでしょうしね、) もうちょっと手を加える所があるんだけどわかりますか? 014行目のraw notesで求められる所全てが空の場合は空白を返してきますのでその場合は16行目から38行目全ての処理が無駄になりますし、elseも簡略化させる事が可能です |
| スクリプトを見やすくしよう。 | |||||
|
|||||
| ってな感じでスクリプト全体もスマートになったようです。 024行目の「/=」演算子はコンパイルするとちっちゃな「ユ」になりますが、これは日本語フォントで文字化けしているだけで英語フォントの/=の記号になっていますので御安心を、、。 ここで注意したいのは、017〜020行目の変数への代入です、構文内で使われていない変数を呼出すとエラーになってしまう、また空を変数に代入しておけば、025行から始まるif文でelseが発生した時の為にも無駄な代入をしないで済み一石二鳥な代入ですね、、。 |
| 今回はこの辺で、、、。 |
一様今回はEudoraのアドレス帳の読み込みを全部書けたと思いますので(というか今回ちょっと長く書いてしまったので、)続きのファイルメーカーに読み込みは次回に回したいと思いますのでよろしくお願いします。 また他のメーラもやってきたいですね、、OutLookとか、、汗。 でも、自分が使ってないのでやる気があんまないです、、見た感じではEudoraのスクリプトより簡単だと思いますので楽勝かな?挑戦してみてくださいね、、さて、さて、、ではでは、JinJinでした、、またねー♪ |
|
|