2016-09-15 7 views
2

特定のメールアドレスに多くの顧客のvcardが届きました。私はvcardsをメールルールとAppleScriptを使って連絡先に自動的に追加したいと思います。メールルールとAppleScriptで連絡先にvcardを追加

私は多くを検索して何かを見つけました。私は少しそれを変更しました。オープニングと追加のプロセスはうまくいきます。しかし、私がファイルを選ぶときだけです。メールメッセージから変数にファイルを取得できません。私はそれを試したが、うまくいかない。ここで

は、これまでの私のコードです:

tell application "Mail" 
    set att to attachment 
end tell 
set thefile to att 
tell application "Contacts" 
    activate 
    open thefile 
end tell 
tell application "System Events" to keystroke return 

私はライン1、2と3を削除し、4行目で書く場合、それが動作する「ファイルを選択することがthefileを設定する」 - 私は、ファイルを選択した場合。 最初の3行は何かを試しましたが、成功しませんでした。 私の質問は、メッセージからファイルを取得するにはどうすればいいですか?

は、

敬具 クリスありがとうございまし

ソリューション:電子メールから添付

set Dest to ((path to desktop folder) as string) 
tell application "Finder" to make new folder in Dest with properties {name:"TempFiles"} -- create TempFiles folder 
Set Dest to Dest & "TempFiles:" 
tell application "Mail" 
activate -- not sure is mandatory, but I prefer to see selected mails !! 
set ListMessage to selection -- get all selected messages 
repeat with aMessage in ListMessage -- loop through each message selected 
    set AList to every mail attachment of aMessage -- get all attachements 
    repeat with aFile in AList -- for each attachement 
     if (downloaded of aFile) then 
      set Filepath to Dest & (name of aFile) 
      do shell script "touch " & (quoted form of (POSIX path of Filepath)) -- required because "Save" only works with existing file ! 
      save aFile in (Filepath as alias) as native format 
     end if 
    end repeat -- next file 
end repeat -- next message 
end tell 

tell application "Finder" to set CardList to every file of folder Dest whose name extension is {"vcf"} 
tell application "Contacts" 
activate 
repeat with aCard in CardList 
    open aCard 
    delay 1 
    tell application "System Events" to keystroke return 
end repeat 
end tell 
delay 2 
-- tell application "Finder" to delete folder Dest 

答えて

0

ファイルが応答する「保存」コマンドが、それにはない '' オープン。次に、添付ファイルを保存してから、後で次のアプリケーションに移動する必要があります(ケースに「連絡先」を追加してください)。

添付ファイルは、メッセージの「メール添付ファイル」のリストのメンバーです。添付ファイルが多数ある可能性があることに注意してください。

また、 'downloaded'属性がtrueの場合にのみ、添付ファイルを保存できます。

最後に、Snow Leopardでうまく動作していた「保存」命令が、El Capitainで同じように動作しないようです。保存するファイルは「保存」の前に存在する必要があります...これが最初に作成する「touch」コマンドを追加した理由です(tempFilesフォルダにエントリを作成するだけです)。

また、連絡先で検証するEnterキーを使用して、開いているvCardをスクリプトの下部に追加します。あなたのコンピュータがカードを処理するために、ある程度の時間を置かなければならない場合があります。

キーが壊れた場合は、システム環境設定のアクセシビリティ設定をチェックして、お使いのコンピュータでスクリプトがMacを制御できるようにしてください。

できるだけ多くのコメントを追加して、明確にするように...多すぎるかもしれません!あなたが見ることができるように

set Dest to ((path to desktop folder) as string) 
tell application "Finder" to make new folder in Dest with properties {name:"TempFiles"} -- create TempFiles folder 
Set Dest to Dest & "TempFiles:" 
tell application "Mail" 
activate -- not sure is mandatory, but I prefer to see selected mails !! 
set ListMessage to selection -- get all selected messages 
repeat with aMessage in ListMessage -- loop through each message selected 
    set AList to every mail attachment of aMessage -- get all attachements 
    repeat with aFile in AList -- for each attachement 
     if (downloaded of aFile) then 
      set Filepath to Dest & (name of aFile) 
      do shell script "touch " & (quoted form of (POSIX path of Filepath)) -- required because "Save" only works with existing file ! 
      save aFile in (Filepath as alias) as native format 
     end if 
    end repeat -- next file 
end repeat -- next message 
end tell 

tell application "Finder" to set CardList to every file of folder Dest whose name extension is {"vcf"} 
tell application "Contacts" 
activate 
repeat with aCard in CardList 
    open aCard 
    tell application "System Events" to keystroke return 
end repeat 
end tell 

-- tell application "Finder" to delete folder Dest 

、私はあなたの選択した電子メールでも連絡先が処理できないファイルの他の種類が含まれているだけの場合には...拡張子を持つファイルのみ「VCD」とTempフォルダの内容をフィルタリングします。

スクリプトの最後に、一時フォルダを削除します。しかし、あなたがテストするまでは、この最後の行をコメントとして設定します(より安全です)。

+0

ありがとうございます - あなたのスクリプトは私のために働きます。 しかし、ここで私は のtellアプリケーション「連絡先」 を置けばいいのでは エンド オープンthefileを有効 一部のキーストローク復帰に のtellアプリケーション「システムイベント」を教えて?スクリプトの最後かどうか?何も私のために働くが、スタンドアロンとしてのスクリプトは完全に動作する。 –

+0

私は、「vCardを開く」と一時フォルダの削除まで、スクリプト全体を更新するだけです。 – pbell

+0

ありがとうございますが、TempFilesフォルダではうまく機能しませんでした。 私のデスクトップのフォルダにすべてのファイルをダウンロードできますが、サブフォルダにはありません... そして、システムイベントのキーストロークはもう動作しません... 多分私はそれを自分で修正することができます。それはあなたのコンピュータにありますか? –

関連する問題