H.M.F.B AppleScript.



さてさて、、またまたご無沙汰してしまいました、んと今回はメールソフトのメッセージを書出すスクリプトを紹介しますね、、まぁ、僕がいつも使っているのはEudoraProなんですが、OutlookExpress5を使用されている方がやはり多いのでそちらをメインに紹介します。

あ、もちろんEudoraPro系も同じものを作ってあるよ、。


とあるメールフォルダ(例では「読み込みフォルダ」とした)の中のメッセージの「本文、送信日時、メールアドレス、タイトル」をテキストファイルに書出します。
ですので、とりあえず、自分宛にメッセージを何通か出してメールチェックしておいて下さいね。

ようするに、↓こんな感じね(Textを表示してるのはJedit4っていうスーパークールなTextエディタ、Macユーザー御用達ツール?、ホントお薦めだよ! →(Jedit) 株式会社まつもと



Outlook Expressの用語辞書のmessageを見てください、、大抵の事は、、↓こんな感じで実行?というかアクセス出来ますので簡単かんたん!

(Properties) of message (数) of folder (フォルダ名)

さて、、では、早速スクリプティングっ!

000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029






tell application "Outlook Express"
  activate
  set OLE_Folder to "読み込みフォルダ" --読み込みたいフォルダ名を指定。
  
  set Mes_Num to count message of folder OLE_Folder --メッセージを数える
  repeat with i from 1 to Mes_Num --メッセージ分くり返す。
    
    set Mes_subject to subject of message i of folder OLE_Folder --タイトル
    set Mes_Mail to address of sender of message i of folder OLE_Folder --メール
    set Mes_Send_data to time sent of message i of folder OLE_Folder --送信日付
    set Mes_content to content of message i of folder OLE_Folder --本文
    
    tell application "Finder"
      try --errorが出てもclose accessさせる為
        
        set File_Num to open for access file ツ
          "Macintosh HD:desktop Folder:test-text" with write permission
        
        set File_Length to get eof File_Num
        
        write Mes_subject & tab & Mes_Mail & tab & Mes_Send_data ツ
          & return & Mes_content to File_Num starting at File_Length
      end try
      close access File_Num
    end tell
  end repeat
  beep
end tell


さて、、書出す所がなければすごくスッキリしたスクリプトでしょ?
013行目にFinderにTellしてopen for accessさせてるのに疑問をもった方もいるかも知れませんが、なんか知らないけどOutlookExpress内で実行出来なかったからFinderを呼出してるんだ、。

002行目 activate
なんのアプリケーションにしてもやはりactiveteにしないとスクリプトの実行速度に差がでます!と言いたいのですが、あんまかわらないね、、笑。 でもアプリを交互に入れ換えて実行する時はポイントになるので注意してね。

003行目 set OLE_Folder to "読み込みフォルダ"
OLE_Folderという変数に読み込みたいフォルダ名を代入します。 例では読み込みフォルダ内のメッセージを読み込むので「読み込みフォルダ」としましたのでその名前を記入

005行目 set Mes_Num to count message of folder OLE_Folder
今回repeat文を使用してメッセージ全部を読み込みたいのでメッセージ数をカウントしました。

006行目 repeat with i from 1 to Mes_Num
005行目でMes_Numへメッセージの数が入ったので with i from1to Mes_Num文リピートさせます。
ここ以降で出てくる「i」はループ変数となります。

008行目 set Mes_subject to subject of message i of folder OLE_Folder
変数 Mes_subjectへ、message (数)のsubject(タイトル)を代入します。 ただこれだけで良いんですよー、簡単かんたん、

009行目 set Mes_Mail to address of sender of message i of folder OLE_Folder --メール
010行目 set Mes_Send_data to time sent of message i of folder OLE_Folder --送信日付
011行目 set Mes_content to content of message i of folder OLE_Folder --本文
上から順にメールアドレス、送信日付、本文を、変数に代入しています

013〜025行目 open for access
こちらでは代入された内容を記述しています。 repeat文内で実行していますので1回目には、message1を、、二回目ならmessage2を、、と順番に記述させています。
(デスクトップ上にtest-textファイルを作成しますので同名ファイルがない事を確認してください テキストファイルならば追加書込みされるだけなので大丈夫だと思いますが、、ね)

026行目 end repeat リピートの範囲を指定しています。
027行目 beep 終わったかどうかワカラナイので書き込みが終了したらbeepを実行します

おわり、、って、ちょっと説明簡単すぎた? つーか、楽勝ですよね、、うん、、。



さて、アウトルックエキスプレス、、名前なげーんだよ、、!とか、Microsoft嫌いな人もいると思いますので、、僕のお気に入りEudoraPro系(例ではVersion4.3)のスクリプトを紹介します。

OLEの時とほぼ同じですね、、(同じ系統のアプリケーションの場合は会社が違ったとしてもAppleScriptの構文はほとんど一緒、、な事が多いみたい、、←僕の少ない経験から、、爆)

違いは、、OLE→Eudora

1、メールボックスの名前、 mailfolder → mailbox
2、日付 そのまま日本語で出るし用意してある → 英文しかも fieldで指定しなくてはならない
3、メールアドレス アドレスのみの指定が可能 → fieldで指定、しかも何かしないとならなそう

と、要するにAppleScriptに関してはOutlook Expressの勝ちですねー、、。うん、僕もインターフェイスが分離出来るようになったら乗り換えることにするよ、、。Eudora→OLE なんてねー、、がんばってよEudoraさん、、

000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027






tell application "Eudora 4.3"
  set EDR_Box to "読み込みフォルダ"
  
  set Mes_Num to count message of mailbox EDR_Box
  repeat with i from 1 to Mes_Num
    set Mes_subject to subject of message i of mailbox EDR_Box
    set Mes_Mail to field "From" of message i of mailbox EDR_Box
    set Mes_Send_date to field "Date" of message i of mailbox EDR_Box
    set Mes_content to body of message i of mailbox EDR_Box
    
    tell application "Finder"
      try --errorが出てもclose accessさせる為
        
        set File_Num to open for access file ツ
          "Macintosh HD:desktop Folder:test-text" with write permission
        
        set File_Length to get eof File_Num
        
        write Mes_subject & tab & Mes_Mail & tab & Mes_Send_date ツ
          & return & Mes_content to File_Num starting at File_Length
      end try
      close access File_Num
    end tell
  end repeat
  beep
end tell



さて、今回本当はファイルメーカーにメッセージを読み込ませようと思ったのですが、、結構高価なアプリケーションだから、、気軽には出来ないですからね、、と、思ってテキストに書出したんですが、Tellで色々なアプリケーションに読み込ませる事が出来るので色々やってみてくださいね、、。

Microsoftのアプリケーションってやっぱり使いやすいね、、でも、マシンパワーが必要だったりする所がたまにキズ、、っす、、ね、、。

ではでは、、次回はいつになるかわかりませんが、、また来てみてくださいね、、JinJinでした。



(c)HandyMacForBeginner's