使用邮件规则和Applescript将联系人添加到联系人

时间:2016-09-15 11:05:44

标签: applescript apple-mail

我收到了很多客户vcards到特定的电子邮件地址。我想通过Mail规则和AppleScript自动将vcards添加到我的联系人。

我经常搜索并发现了一些东西。我修改了一下。开放和添加过程工作正常。但只有当我选择一个文件时。我无法从邮件消息中将文件转换为变量。我尝试了但它不起作用。

到目前为止,这是我的代码:

df['column_name'] = df['column_name'].astype(float)

如果我删除第1,2和3行并在第4行写入“将文件设置为选择文件”,那么它将起作用 - 如果我选择一个文件。 但前三行我试了一下,但没有任何成功。 所以我的问题是,如何从消息中获取文件?

谢谢

您诚挚的, 克里斯

解决方案:

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 个答案:

答案 0 :(得分:0)

通过电子邮件附加的文件会回复'保存"命令,但不打开'。然后,您必须先保存附加的文件,然后再将其移至下一个应用程序(在您的情况下添加'联系人')。

该附件是“邮件附件”列表的成员。消息:请记住,可能附加了许多文件。

此外,您只能保存附件,如果已下载'属性为真。

最后,但并非最不重要的是,似乎"保存"在Snow Leopard中运行良好的指令在El Capitain中的工作方式不同:保存的文件必须存在于" save" ...这就是为什么我添加" touch&# 34;命令首先创建它(只需在tempFiles文件夹中创建条目)。

我还在脚本底部添加了带有回车键的open vCard以在Contact中进行验证。您可能需要延迟一段时间才能让计算机处理该卡。

如果破坏的密钥在您的情况下不起作用,请检查系统偏好设置辅助功能设置,以允许您的计算机让您的脚本控制您的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”的文件过滤了临时文件夹的内容...以防万一您选择的电子邮件中还包含其他类型的文件,其中“联系人可以”这样做。处理完毕。

在脚本结束时,我删除了临时文件夹。但是,在测试之前,我将最后一行设置为仅限注释(更安全!)