本站原创文章,转载请注明: 转载自zrong's Blog,原文 google联系人自定义导入小工具开发过程及源码,欢迎使用文章源码进行转载。
本站转载文章会标明[转],转载请注明原始作者文章地址。
一、起因
做这个小工具的起因是把黑莓8700g换成了Android系统的三星i5700。由于我的8700g是4.2版本的ROM,不支持google sync程序的安装,而我换了手机后又懒得再去鼓捣黑莓的刷机,因此就直接用黑莓的管理软件导出CSV文件,然后在gmail的通讯录管理界面中导入。
可是问题就接踵而来,gmail的通讯录导入程序不能识别黑莓导出的所有字段,因此只有部分字段被导入到gmail 通讯录中了,这显然不行。
接着我用gmail通讯录导出了一个csv文件,然后按照导出的CSV文件的格式来修改黑莓导出的CSV文件,并使排序完全一致。结果这样也不行,导入的通讯录更加不完整。
仔细查看了gmail的帮助,根据帮助提供的范例修改了CSV的字段名称,倒是可以导入。但gmail帮助提供的范例中的字段很少,并不能完整的支持我的通讯录。
我试验过的gmail通讯录导入支持的字段如下:
名,姓,公司(或者用“单位”也可以),职务,移动电话,住宅电话,电子邮件地址
如果联系人的信息并不多,那么用上面的字段就可以完成了,可是我的很多联系人,都有超过2个以上的电话,有十几个联系人有4个电话,因此就没办法用这个来导入。
这还不算,最大的问题,是gmail中的导入功能无法支持群组的导入。也就是说,原来在黑莓中对联系人进行的分组,都无法识别成gmail的群组。
要解决以上问题,就只能使用Google Contacts Data API来处理了。
二、分析与选择
Google Data API其实已经提供了很多客户端库,但是唯独没有基于ActionScript的。因此只能使用XML来处理。
1.AIR还是SWF
本来准备做两个版本,先做SWF版,然后转成AIR版,但后来发现SWF有很多限制,因此只能使用AIR来制作这个工具。
SWF的限制包括:
- 仅支持HTTP协议的POST和GET方法,不支持PUT和DELETE,Google Data API的某些操作是需要PUT和DELETE的。(对PUT、DELETE不清楚的可以看这里)
- google的跨域文件的限制
2.选择何种google账户认证方式
google提供了三种账户认证的方式(注意:这个页面的ClientLogin的“了解详情”链接是错误的,要访问正确的地址,可猛击这里)、OAuth、AuthSub和ClientLogin,我对这三种都进行了测试。Google推荐使用的是OAuth,这种认证方式复杂但安全,它需要打开google的登录界面进行登录,登录后再返回软件界面。对于桌面程序来说,这就要判断用户的操作,怎样才算作登录成功了。比如判断浏览器的标题栏、或者判断cookie、或者使用时间轮询等等。对于一个小工具来说,这太复杂了。
AuthSub与OAuth类似,但流程要简单一些,还是要使用google的登录界面。
ClientLogin就简单多了,只需要提供google账户的用户名和密码就可以了。因此这个工具使用的是ClientLogin。
3.Google数据API(Google Data API)
这里是Google Data API的列表页面,其中,Goole 账户验证和Google 数据 API是大部分API都要用到的规范,只要涉及到数据处理和账户验证,都要用到这两个API,而对应的产品也有自己的API,例如google通讯录的API就是Google Contacts Data API,联系人API中的很多细节,却是Google 数据 API提供的。
4.E4X
在没有客户端库的情况下,对XML的操作,是个挺麻烦的事情。这个小工具很简单,大部分的工作量其实都花在对XML的处理上。大量的XML操作让我感觉到E4X真的是却是非常方便和优雅。对于E4X操作,下面这两篇文章有很大的参考价值:
或许,我后面也会写一篇经验吧。
三、工具使用注意事项
- CSV编码必须为UTF-8;
- CSV字段名称不能重复;
- CSV的换行符默认使用“\n”,可以在源码google::GoogleContact.CSV_LINE_BREAK中修改。“\n”是Linux系统的默认换行符,windows系统的默认换行符为“\r\n”。具体你的CSV是使用什么作为换行符,可以在CSV的编辑工具中指定。许多文本编辑器支持换行符的转换。
- CSV中联系人群组字段的名称必须为“群组”(当然,可以在源码中自己改google::GoogleContact.CSV_GROUP_FIELD_NAME);
- 每一次提交之后,不要重复操作,要等待google返回后再处理。
四、下载信息
1.下载AIR运行时并安装;
2.下载AIR包并双击安装:
googleContactImporter (690.8 KiB, 477 hits)
源码:http://googlecontactimporter.googlecode.com/svn/trunk/
项目地址:http://googlecontactimporter.googlecode.com



博主真是好人啊,我现在真有想请你吃饭的冲动。这个工具帮了我的大忙,我也面临你的问题,但是不像你做了这么好的工具。 :em46:
今后人们手机用android系统的人可能会越来越多,如果google在这方面不尽快改进的话,很多人都会面临通讯录迁移的问题。所以,你这个小软件大有市场啊,1个人1块钱,一点儿也不贵。建议博主定期更新这个小工具,让它越来越好用,成为一个非常实用的小软件。如果我以后再用,我愿意花钱买。谢谢!!
谢谢,你的工具帮了我大忙。建议电话类型再多加几个,如果一个联系人有4个电话,目前的工具就没法处理了。
那你就来请我吃饭吧! :em49:
做这个工具的原因,是因为我原来用的黑莓8700G的系统(4.2)不支持Google官方提供的通讯录同步软件,我又懒得刷4.5版的系统,就干脆写了个工具来转。
现在还在用4.2版黑莓的很少很少了吧,新的黑莓手机都能安装Google官方的软件的,也就用不到这个工具了,因此我可能不会再更新这个小工具了。
关于你的付费提议,我看到你的博客是写金融经验的,感谢你的建议。不过我认为这个小工具本来就是针对灰常小众的一群人,而且也开源了,就没有收费的必要了吧,不过还是很欢迎你来请我吃饭的! :em35:
怎么用啊,楼主???
看下载说明后面的信息,按照步骤做就可以了。