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

EudoraからFMPへメール取り込み

発言者:伊東 三紀
( Date Friday, May 07, 2004 12:32:36 )


はじめまして、いつも困ったときには拝見していますが、
今回はじめての投稿です。
ドシロウトゆえ、質問が適切かどうか分かりませんが、
ご教授いただければ幸いです。

現在、 「MAC OS 9.2」「OLE5」「FMP5」といった環境です。
それを、「MAC OS10.3」「Eudora6」「FMP6」の環境に変える予定です。
OS10.3に移行するにあたり「OLE」が使えなくなり困っています。

以前「OLE」用のアップルスクリプトで「メリサ」という物があり、
FMPでメール取り込みをしていました。
これがすごく便利で、重宝していたのですが、
以前ダウンロードしたサイトも無くなっていました。
「メリサ」のユードラ版があれば問題解決なのですが、
見あたらず困っています。

スクリプトの書き換えが出来ればいいのですが、
理屈が分かっていないので、エラーばかり…。
だれか教えていただけないでしょうか?

下記に「メリサ」のスクリプトを記述しておきます。

-------(ここから)-------

property SP : "/" 
global gML, gNO, gTime

my saveMail(cell "フォルダ名")
beep

-- メールの保存
on saveMail(fPath)
  tell application "Outlook Express"
    set theFolder to my getFolder(fPath)
    if theFolder = "" then
      beep
      return
    end if
    set cnt to number of message of theFolder
    repeat cnt times
      set listOfItem to {}
      set theMsg to first message of theFolder
      set end of listOfItem to my chkSubject(subject of theMsg)
      set end of listOfItem to display name of sender of theMsg
      set end of listOfItem to address of sender of theMsg
      set end of listOfItem to my chgFMDate(time sent of theMsg)
      set end of listOfItem to gTime
      -- Outlook Express 5 の場合
      set end of listOfItem to my chgFMDate(time received of theMsg)
      set end of listOfItem to gTime
      (* Outlook Express 4.5 の場合
      set end of listOfItem to ""
      set end of listOfItem to ""
      *)
      set end of listOfItem to gML
      set end of listOfItem to gNO
      set theBody to the content of theMsg as string
      --- display dialog listOfItem as string
      try
        tell application "ファイルメーカー Pro"
          set newRec to create new record at database 1 with data listOfItem
          set cell "本文" of newRec to theBody
        end tell
        move theMsg to folder "削除済みアイテム" --フォルダ移動
      end try
    end repeat
  end tell
end saveMail

-- フォルダ名の抽出
on getFolder(fPath)
  set AppleScript's text item delimiters to {SP}
  set cnt to count of text item of fPath
  if cnt = 1 then
    tell application "Outlook Express" to return folder (first text item of fPath)
  else if cnt = 2 then
    tell application "Outlook Express" to return (folder (text item 2 of fPath) of folder (first text item of fPath))
  else if cnt = 3 then
    tell application "Outlook Express" to return (folder (text item 3 of fPath) of folder (text item 2 of fPath) of folder (first text item of fPath))
  else -- もっと深い階層が必要なら、ここに追加して下さい。要領は同じです
    return ""
  end if
  set AppleScript's text item delimiters to {""}
end getFolder

-- subject からMLの名前と番号を抽出
on chkSubject(theSubject)
  -- 標題が  [XXXXX: 99999] タイトル の形式のものを処理、それ以外はそのままを返す
  if first character of theSubject = "[" then
    set pos1 to offset of ":" in theSubject
    set pos2 to offset of "]" in theSubject
    try
      set gML to (text 2 thru (pos1 - 1) of theSubject)
      set gNO to (text (pos1 + 1) thru (pos2 - 1) of theSubject) as integer
      if character (pos2 + 1) of theSubject = space then
        return (text (pos2 + 2) thru -1 of theSubject)
      else
        return (text (pos2 + 1) thru -1 of theSubject)
      end if
    on error -- エラーの時
    end try
  end if
  set gML to ""
  set gNO to 0
  return theSubject
end chkSubject

-- FM用に日付と時刻の編集
on chgFMDate(theDate)
  set yy to year of theDate
  set mm to month of theDate
  set dd to day of theDate
  set gTime to time string of theDate
  if mm = January then
    set mm to "1"
  else if mm = February then
    set mm to "2"
  else if mm = March then
    set mm to "3"
  else if mm = April then
    set mm to "4"
  else if mm = May then
    set mm to "5"
  else if mm = June then
    set mm to "6"
  else if mm = July then
    set mm to "7"
  else if mm = August then
    set mm to "8"
  else if mm = September then
    set mm to "9"
  else if mm = October then
    set mm to "10"
  else if mm = November then
    set mm to "11"
  else
    set mm to "12"
  end if
  return (yy as string) & "." & mm & "." & (dd as string)
end chgFMDate

-------(ここまで)-------

それでは、長々となりましたが、よろしくお願い致します。

伊東 三紀
more_m1007@yahoo.co.jp

田中求之 さんからのコメント
( Wednesday, May 12, 2004 14:33:13 )

スクリプトを丸投げして修正してほしいというのは、ちょっと虫が良すぎる
と思いますが。

少なくとも、どんな構成のデータベースにメールを取り込みたいのかぐらいは
説明してもらわないと、アドバイスもなにもできません(メールのどんな
要素をどんな属性のセルに入れることになるのか?等)

Eudora は AppleScript にきちんと対応していますから、Eudora からメールを
ファイルメーカーに移すことはちゃんとできます。

OS X の Office には Entourage という Outlook Express の後継のメールソフトが
付属しますが、これだと Outlook Express のスクリプトを修正すれば使える
ようにも思うのですが、どうなんでしょうね?> Entourage をお使いの方

たまちゃん さんからのコメント
( Wednesday, May 12, 2004 15:00:43 )

ずいぶん昔に下記のプログラムを試したことがあります。

→  Email2FMP

伊東 三紀 さんからのコメント
( Thursday, May 13, 2004 11:52:50 )

田中様・たまちゃん様 書込ありがとうございます。
そして、田中様のおっしゃる通り虫が良すぎる内容のようですね。

わたし、FMPを余り触った事がなく、今回の内容も、
アップルスクリプト内の「Outlook Express」を「Eudora」に
変えたりすれば簡単にいくものだと思っていたのです。

そして、数日前パソコンショップの店員さんにお伺いした所、
簡単にできるものじゃないよ!っと言われ、
安易なカキコミを反省しています。

田中様の「どんな構成のデータベースに…」とありましたが、
わたしは通販サイトをお手伝いしていまして、
ショッピングカートから来た受注メールを
ファイルメーカーに取り込むという作業をしたかったのです。

----------(注文商品)---------
- 商品1 -
商品No :1234
商品名:5678
カラー:ピンク
サイズ:S 
単価:10500円
数量:1
小計:10500円
-------------------------------
合計額:10500円 
送料:無料
代引手数料:0円
総額:10500円
-------------------------------

上記のような受注メールが送られてきて、
住所などの個人情報を含んだ全文をファイルメーカーに取り込んで、
個々のフィールドに割り当てるようにしています。
しかし、[OLE]から[Eudora]に変更するため困っていました。

そして、たまちゃん様の参考ページを見て決断しました。
専門家に外注します(笑)
英語ばかりで私にはムリと分かりました。
せっかくカキコミしていただいたのに申し訳ございません。
そして、ありがとうございました<(_ _)>