我最近在为一些公益活动做志愿者,需要把收到的邮件整理,还需要把联系人都保存下来,添加到通讯录,方便用BCC群发回复支持者,向支持者报告最新动态。GMAIL本来有自动添加联系人功能的,后来人们抗议自己的通讯录里出现一些不认识的人,于是GMAIL把策略改为回复过的人的邮件地址才进通讯录,以便回邮件时自动完成邮件地址。这样,我需要手工把近千封邮件点开,然后点开右上角的下拉按钮,找到“将 ***加到联系人列表” ,这么一来,我会累死。
所以我想到Applescript也许可以自动帮我点击,结果搜索半天,没发现click()对窗口有作用,后来查看了GMAIL的快捷键,调试了半天,写出下面的脚本,虽然不能完全不干预就自动添加所有联系人,但还是减轻了我的工作量。
下面的脚本遇到几个意外情况需要人工干预,若关掉GMAIL的聊天功能,就可以避免下拉菜单中的“将 ***加到联系人列表” 出现在第五或第六的位置,脚本中就控制按五下向下方向键(arrow down),不过,若遇到联系人已经在通讯录的,第五下又会变成“删除邮件”,这个我没办法避免,删除原有通讯录也不能改善,只好人工干预。
Gmail每次只能预览100个会话,所以,脚本被我设置成循环100次,用下面的:
配合
来实现。
这一行是激活Chrome窗口
tell application “Google Chrome” to activate
这 一行是调用“System Events”,需要去MAC的“辅助功能”里启用“启用辅助设备的控制”
tell application “System Events”
这一行是用计数的,电脑可以语音报数
say var
这一行是用来 报告任务完成的
say “30 times done”
我解释一下下面的代码的效果:复制到AppleScript编辑器(苹果电脑系统自带的工具)里点运行后,先跳到Chrome浏览器,浏览器要先打开GMAIL并到设置里关闭聊天功能,然后开始把计数器var设置为0,然后判断这个数字是否小于30,然后电脑念出数字,然后按j键跳到下一副封邮件,然后按逗号定位到GMAIL的工具栏,然后按tab键15下到下拉菜单,确定,再下拉5下,确定,这样就保存联系人,然后再tab按两下,这两下tab是为了避免邮件会话中有多封邮件的情行光标焦点跑到textarea里导致下一个指令j不能跳转到下一封邮件。然后把var加上1,接下来继续循环,直到计数器达到我设定的30.
查看所有GMAIL的快捷键,输入问题就可以查看。shift+?才能输出“问号”。
repeat 15 times
keystroke tab
delay 0.05
end repeat
感谢,原来AppleScript更接近自然语言啊