最近在折腾用API获取钉钉考勤记录。
被一个钉钉官方未说明的坑折腾了一个半死。

坑在何处

在这个页面,钉钉列出了获取考勤报表的API接口及说明,以及示例。
image.png
在上面截图中,红圈里的就是坑所在。
实际上,column_id_list这个参数有列数限制(不能超过20列)。但是钉钉官方没给出这个限制的说明。

为什么我会踩这个坑呢?是因为我想把钉钉考勤报表里的所有列都拿到(虽然没必要,但是我懒得去筛)。这样我得到了43个列id。
然后我把这43个列id喂给这个api接口,最开始测试用的是一两个列id,一点都没问题。当我把所有43个列id喂进去之后,钉钉就报错了,说:

  1. {
  2. "errcode":41,
  3. "errmsg":"Invalid arguments:column_id_list",
  4. "request_id":"8pmnftzv57ju"
  5. }

只说参数出错,但是没说什么错。把我这个python不熟练的家伙弄了个一头雾水,检查代码一遍又一遍,测试一次又一次,就是不知道问题出在什么地方。
直到我突发奇想,把43个参数一个一个地删除,然后喂给接口……
终于删除到只剩20个的时候,不再报错了……

还有一个不是坑的坑

to_date这个参数,钉钉官方给的说明是它和from_date的差值不能超过31天,但实际上是可以超过31天的:
image.png
不过钉钉官方的API Explorer却又不能超过31天的限制:
image.png
不知道为什么会这样。也许就是一个乱字吧。