2016-09-15 65 views
2

我收到大量的客戶電子賀卡到特定的電子郵件地址。我想通過郵件規則和AppleScript自動將vcards添加到我的聯繫人。添加電子名片到郵件規則和Applescript的聯繫人

我搜索了很多,發現了一些東西。我修改了一下。開放和添加過程正常工作。但只有當我選擇一個文件。我無法從郵件中獲取文件到變量中。我嘗試過,但它不會工作。

這是到目前爲止我的代碼:

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選擇文件」,那麼它會工作寫 - 如果讓我選擇一個文件。 但前三行我嘗試了一些東西,但沒有任何成功。 所以我的問題是,我怎樣才能從消息中獲取文件?

謝謝

此致, 克里斯

解決方案:

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

從電子郵件中附加的文件迴應「保存」命令,而不是 '開放'。然後,您必須先保存附加的文件,然後將它們移動到下一個應用程序(在您的案例中添加'聯繫人')

附件是郵件「郵件附件」列表中的成員:請記住附件可能有多個文件。

此外,只有在「已下載」屬性爲true的情況下,才能保存附件。

最後但並非最不重要的一點是,似乎在「雪豹」中運行良好的「保存」指令在El Capitain中不起作用:要保存的文件在「保存」之前必須存在...這就是爲什麼我添加了「touch」命令來首先創建它(只需在tempFiles文件夾中創建條目)。

我還在腳本的底部添加了使用回車鍵在聯繫人中驗證的打開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」文件的內容...以防萬一您選擇的電子郵件中也含有該聯繫人無法處理其他類型的文件。

在腳本結尾,我刪除了臨時文件夾。然而,直到你測試它,我把這最後一行作爲評論(更安全!)

+0

謝謝 - 你的腳本適合我。 但我在哪裏把 告訴應用程序「聯繫人」 激活 開放thefile 端告訴 告訴應用程序「系統事件」向按鍵返回 一部分?在劇本結束還是之間?沒有任何作品適合我,但腳本作爲獨立作品完美無缺。 –

+0

我只是用完整的腳本更新我的腳本,包括「打開電子名片」,並刪除臨時文件夾。 – pbell

+0

非常感謝你,但它從來沒有與TempFiles文件夾一起工作。 我可以下載所有的文件到我的桌面文件夾,但不是在子文件夾中... 而系統事件擊鍵的事情將不再工作... 也許我可以解決它在我自己...你試過它在你的電腦上? –

相關問題