长假期间,我写了一个小程序,现在正式发布。
大家用不用Google日历?
它可以用来规划日程、记录事项、甚至写日记,既安全(数据保存在Google的机房)又方便(各种平台都能访问),甚至还很贴心地提供手机同步和免费短信提醒。
相信很多人与我一样,非常需要这个产品。但是,又不喜欢它的界面:拥挤丑陋,辨识困难,操作麻烦。于是,2008年,我写了一个"Google日历简易版"。
今年四月份,Google启用新版本API,我的那个程序彻底无法使用了。考虑到还有需求,利用这几天,我索性就重写了一遍。
现在就让我,正式推出"Google日历简易版 2.0"!
* 操作简便,只需鼠标一点,就可以看到近期事件;
* 界面清爽,放大了字体,易于阅读;
* 快速安全,直接与Google交互,全程https加密通信。
欢迎大家试用,看看有没有bug。网址是:
两点使用说明:
1)支持各大浏览器的最新版本,IE6、7、8、9除外(因为它们不支持ajax跨域)。
2)这个程序对Javascipt的要求比较高,移动终端方面,我的Android平板可以使用,但是Android手机不行。有ios设备的朋友,帮忙看看,ipad/iphone能不能用。
======================================
(关于发布软件的内容到此为止,接下来是插播时间,我实在忍不住,想谈谈Google。)
这个程序全靠Google的API,但是Google是怎么开放API的?用户是不知道,开发者看了,心都凉了。
今年四月生效的API第三版,比第二版少了很多功能。其中有两个,影响尤其巨大。
1. 只提供所有事件(按日期)升序排列,不提供(按日期)降序排列。
2. 不提供某个时间段内的事件总数。
少了这两个基本功能,还怎么玩呀?!你写了一个日历程序,可是连用户的最新事件都取不到......(我现在的解决方法是,一个时间段内限定取回30个事件。如果超出这个数量,只有用户自行缩短时间段了。)
此外,Google还规定,日历API每天请求上限是10000次。你没有看错,真的只有四个零。我数了好几遍,都不敢相信自己的眼睛。
这就是说,你的用户总数,每天最多只能有几百人,Google不允许你发展更多的用户。(相比之下,Google的短网址API,每天请求上限是100万次!)所以,基于这个API的任何程序,大概只能是写写玩玩,不可能考虑运营与发展。
我认为,Google这样地封闭平台,无非就是为了防止外部开发者与其竞争,尽量把用户留在自家网站上。这种鼠目寸光、画地为牢的行为,哪来还有半点理想主义的色彩?
Google,枉费我还为你呐喊过!
========================================
不管怎么说,这个"Google日历简易版",我还是会维护下去的(毕竟眼前找不到更好的在线日历)。
下一次大版本的更新,我打算实现下面两个功能:
1. 颜色标签,不同事件采用不同的背景色;
2. 所有事件都用LocalStorage储存在本地(要不是想到得太晚,这一次我就应该实现这个功能)。
顺便提一下,这一次我是用Bootstrap框架开发的,感觉它方便好用,效果也不错。但是下一次,大概不会用它了,因为觉得不够灵活,很多地方都被它限制住了。Foundation框架对我有可能是一个更好的选择。
(完)
远行de风 说:
貌似不大好使,在iPad上登的,说该时段是空的,没有返回到事件,但其实是有的……
还是感谢分享,回头到电脑上试试看…
2012年10月 8日 00:08 | # | 引用
过客 说:
mac上的fx,登录后,没有刷出任何日历项目。
2012年10月 8日 00:32 | # | 引用
adjusted 说:
为什么会觉得twitter bootstrap 有限制,是不是它的风格太twitter化了?
2012年10月 8日 00:59 | # | 引用
not bad 说:
正打算学学bootstrap 很强大的样子 限制性怎么讲
2012年10月 8日 02:29 | # | 引用
abel 说:
我的IE和世界之窗浏览器都不行。可以推荐一个浏览器给我吗?
2012年10月 8日 05:28 | # | 引用
maas 说:
有个错别字。
无法就是为了防止外部开发者与其竞争
应该是
无非就是为了防止外部开发者与其竞争
2012年10月 8日 06:01 | # | 引用
andy 说:
mac下chrome23可以使用,谢谢
2012年10月 8日 06:35 | # | 引用
1 说:
感谢!!
2012年10月 8日 07:26 | # | 引用
Changer 说:
不知道为什么,我的总是刷新不出来,PC上用Chrome,FF都一样
2012年10月 8日 09:02 | # | 引用
atpking 说:
我也刷不出来哟 chrome 浏览器
2012年10月 8日 09:47 | # | 引用
vincent 说:
当然是chrome了!
2012年10月 8日 10:01 | # | 引用
江左 说:
win7下firefox,刷不出来。是不是因为使用量超标了?
2012年10月 8日 10:02 | # | 引用
罗皓 说:
阮老师能否公开源代码?
2012年10月 8日 10:05 | # | 引用
Angus 说:
1. Windows 7/firefox中,Web UI的刷新Button无反应,要用firefox的Refresh才行
2. 开始和结束日期默认从1970开始。
2012年10月 8日 10:14 | # | 引用
亭子 说:
非常非常喜欢您的简易版。想问一下,我在您的简易版中记录的事情,是保存在google后台吧?不会在您网站后台有备份吧?
2012年10月 8日 10:37 | # | 引用
fatshanee 说:
支持原创免费应用,付费10元以示感谢。
2012年10月 8日 11:37 | # | 引用
orcwangzijun 说:
Win 7 下 Chrome Stable 22 无法刷新出事件
2012年10月 8日 12:50 | # | 引用
阮一峰 说:
我当然不会截取数据。如果你看一下网络通信,就会发现是直接与Google联系的,不经过我的服务器。
另外,上面各位反映无法读取数据的朋友,我暂时无法复制出你们的错误,我这里一切正常。如果你能打开console,请把里面的报错信息告诉我。
2012年10月 8日 13:41 | # | 引用
neutron 说:
非常实用 多谢!
2012年10月 8日 14:14 | # | 引用
chenkun 说:
iphone的[chrome, Safari]浏览器测试报告:
1.日期控件点开后不能关闭
2."添加新事件"按钮无反应
可以做成不弹窗的!
2012年10月 8日 14:44 | # | 引用
yuhai 说:
效果的确不错,暂时没有发现BUG,不过我已经用惯了google原版。
2012年10月 8日 15:49 | # | 引用
QinBX 说:
刷不出日历
Uncaught TypeError: Cannot read property '1' of null main.min.js:1
2012年10月 8日 16:51 | # | 引用
QinBX 说:
Uncaught TypeError: Cannot read property '1' of null main.min.js:1
g.parseDateTime main.min.js:1
g.showEventsList main.min.js:1
a.refreshEventsList main.min.js:1
(anonymous function) main.min.js:1
k code.jquery.com/jquery-latest.min.js:2
l.fireWith code.jquery.com/jquery-latest.min.js:2
p.extend.ready code.jquery.com/jquery-latest.min.js:2
D code.jquery.com/jquery-latest.min.js:2
2012年10月 8日 16:52 | # | 引用
Elegant Tsai 说:
請問阮哥有出繁體的嗎?
2012年10月 8日 17:47 | # | 引用
mathewxiang 说:
无法保存
2012年10月 8日 19:24 | # | 引用
Mead Lai 说:
不错,我在十一也写程序,python搞了一个blog
www.meadidea.com
2012年10月 8日 20:17 | # | 引用
阮一峰 说:
没问题,这几天就做了一个台湾版。
那些js文件都压缩过了,也不知道哪里出问题了。
估计是日期加载没有成功,暂时无法判断出原因
2012年10月 8日 20:31 | # | 引用
GREEKK 说:
我用NEXUS7可正常使用,但是WIN XP中G OOLE浏览器无法使用
2012年10月 8日 20:46 | # | 引用
ZRJ 说:
代码第 11 行,<script src="http://code.jquery.com/jquery-latest.min.js"></script>,这个域名在我这被墙,楼主最好还是自己搞一份 jquery min 的 js 吧。。
2012年10月 8日 21:12 | # | 引用
阮一峰 说:
@ZRJ:
谢谢告知,已经改用微软的jQuery CDN了。
2012年10月 8日 22:14 | # | 引用
yingying 说:
我用的系统是Win7,浏览器Chrome21。日历事件排列顺序是乱的,而且我选的时间段是2012.10.01到2012.10.30,然后显示的时候会有1月和9月的时间。
2012年10月 8日 23:09 | # | 引用
dujuan 说:
对循环日志支持的不够人性化哟,显示的时候设置时的时间,让人看着觉得怪怪的。建议提示一下,是循环日历
2012年10月 8日 23:32 | # | 引用
wkingfly 说:
api个数难道只是限制中国?或者免费用户?想要更多可以买吗?如果Google只是想要把用户留在自己的产品上赚钱,那可以对商业开发者进行收费嘛...
2012年10月 9日 09:13 | # | 引用
xybdl 说:
出错了! The specified time range is empty.
2012年10月 9日 09:52 | # | 引用
雨霁 说:
网页错误详细信息
用户代理: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
时间戳: Tue, 9 Oct 2012 02:54:40 UTC
消息: 缺少对象
行: 6
字符: 14
代码: 0
URI: http://calendar.ruanyifeng.com/js/bootstrap.min.js
消息: 缺少对象
行: 1
字符: 1
代码: 0
URI: http://calendar.ruanyifeng.com/js/main.min.js
2012年10月 9日 10:53 | # | 引用
EastMnt 说:
风格确实很简洁很清爽, 访问的很良好, win7 + chrome 22。
确实有你说的问题, 是按升序排列的, 第一眼看到的就是一对已经过期了的事件。其实是比较关注最近一周和未来的事件。
2012年10月 9日 17:00 | # | 引用
reverland 说:
bootstrap做出来的真漂亮啊
2012年10月 9日 17:08 | # | 引用
路人 说:
Chrome Stable。。不支持跨域请求。
2012年10月 9日 18:39 | # | 引用
dcxy 说:
不怎么用在线日历,可能是习惯还没养成把。不过Google的抠门是有目共睹的,比如地图API,还有搜索API等等,但数据安全还是比较放心的。
2012年10月 9日 19:59 | # | 引用
尘境 说:
添加新事件后,只显示添加后的事件。
如果想要看所有添加的事件就要刷新,但是一刷新就又要登录,有点麻烦。
2012年10月10日 08:37 | # | 引用
alang 说:
我也遇到同样的问题。我是在google doc 里面写google script 脚本,来处理我的spreedsheet表格,函数调用不能超过30秒钟,超过他就喀嚓了调用。一天的计算资源不能超过一个上限,超过就喀嚓了。免费帐户各种限制啊,强迫升级商业版许可。google掉到钱眼里面去了。
2012年10月10日 08:51 | # | 引用
linda.lij 说:
文章看到了最后面都被拉到很下面了,但是却没有一个回到顶部的功能。呵呵
2012年10月10日 10:40 | # | 引用
athena0888 说:
用不了。刷新不出来。。
2012年10月10日 10:52 | # | 引用
FuckCPC 说:
楼主是否有方法能给Google 日历添加农历循环?很多中国人过的农历生日,要是有方法添加,那该多好!
2012年10月10日 22:35 | # | 引用
Jie 说:
为什么要简易版呢,原版才好用。
2012年10月11日 02:17 | # | 引用
axp 说:
有个不能接受的设定……在新建或编辑事件时,如果点击编辑框以外的范围(非焦点区域?),整个编辑都不会保存,相当于直接取消或关闭了。
这样一来,我以后就不敢直接在编辑框里打东西了啊,因为很可能不是一次写完,比如中间看个QQ消息再点击切换回浏览器时,很可能不是点在编辑框内,这样写的东西就全部付诸东流了……泪目。
能不能其他范围不允许点击,或者能点击并自动保存。
2012年10月11日 14:14 | # | 引用
阮一峰 说:
我忘了当时是怎么想的,好像因为每次打开编辑窗口时,日期栏都会重置,所以我索性就把事件栏也重置了。
这个应该不难解决,我想本周内就可以改好。
很感谢你使用这个产品,请继续反馈意见。
2012年10月11日 15:08 | # | 引用
阮一峰 说:
刚才查了文档,发现很容易解决,现在窗口外点击,窗口已经不会退出了。请试用。
不好意思,这样的小问题根本不应该出现了,我早就应该想到的。
2012年10月11日 15:55 | # | 引用
axp 说:
2012年10月12日 11:05 | # | 引用
axp 说:
不过现在又发现刷新后,事件也不是完全按日期升序排列的啊。我这个月5个事件,刷新后的排序分别是:
10号08:00的、10号14:50的、9号的、11号的、12号的。
有点看不懂@[email protected]。莫非10号的那两个可能我修改过了,所以日期有变化?(但也不可能变到9号之前吧…)
2012年10月12日 11:07 | # | 引用
阮一峰 说:
看了一下代码,google是按“更新时间”排序的。
现在已经改过了,应该按照事件“开始时间”排序了。
2012年10月12日 12:41 | # | 引用
shzhong 说:
我的google对你的应用授权,时间是2012年10月8日,但,我是从授权链接进去 你网站才第一次看到你的应用,这是咋回事?
2012年10月13日 10:20 | # | 引用
axp 说:
好的,现在一切正常了,用起来非常顺手。感谢开发这么好的产品
2012年10月13日 12:35 | # | 引用
撑死的懒鬼 说:
话说Google原来的那个挺好用的啊,反而是这个简易版不是很看得明白。。。
2012年10月13日 22:52 | # | 引用
usherxupeng 说:
似乎很简单的感觉
2012年10月16日 02:16 | # | 引用
眺望 说:
Chrome浏览器,Firefox貌似有点小问题
2012年10月18日 10:20 | # | 引用
sergio 说:
Jorte日历用了不错,有在线的。
2012年10月19日 17:54 | # | 引用
袁源 说:
不支持ajax跨域的是非 IE 浏览器吧?我可是职业做前端的艾……
2012年10月21日 21:57 | # | 引用
penguin 说:
我也是,一直在100%那里转
2012年10月24日 00:00 | # | 引用
microcosm 说:
Linux+chrome用起来很舒服,但是不知道能用多久???????????
2012年10月24日 09:42 | # | 引用
阮一峰 说:
应该是你那里Google被屏蔽了,用代理吧。
2012年10月24日 22:50 | # | 引用
真的爱你 说:
@阮一峰 为什么会有莫名其妙的新事件出现在里面啊?我记得第一次刚开通的时候里面就有了一个事件,后来过几天又发现一个新的事件:“什么ipad mini你喜欢哪个(大意如此)”,第二天发现又没了这个事件。。。。这是怎么回事啊????
2012年10月27日 10:30 | # | 引用
阮一峰 说:
可能是你设置了日历共享,你去google的原版查一下,该日历是否包含了其他成员。
2012年10月27日 22:20 | # | 引用
真的爱你 说:
2012年10月30日 20:14 | # | 引用
cassie00 说:
谷歌日历目前还没有用过,其他如搜索引擎,各种seo工具却如数家珍,很多外贸网站的查询推广,如维库网,都会借助它,希望多多交流
2012年11月 2日 05:24 | # | 引用
rodney 说:
你这个首页进来怎么只看到10月的这一篇,看不到最新的帖子。怪哉。
2012年11月20日 01:54 | # | 引用