以後執行在後台自動定時匯出日誌資料,處理好格式加上一些分析判斷,報表再也不用自己做了返回資料格式見釘釘開發文件
# -*- coding: gbk -*-
import time
import datetime
from datetime import timedelta
import json
import requests
#轉為13位時間戳
defgettimestamp
(start_time_src,end_time_src)
: start_time_convert=time.mktime(time.strptime(
str(start_time_src)
,'%y-%m-%d %h:%m:%s'))
end_time_convert=time.mktime(time.strptime(
str(end_time_src)
,'%y-%m-%d %h:%m:%s'))
start_time=
int(
round
(start_time_convert *
1000))
end_time=
int(
round
(end_time_convert *
1000))
return
#獲取一天/一周/一月的日期區間
#today=2020-06-19 00:00:00 tomorrow=2020-06-20 00:00:00
defgettime()
: today = datetime.datetime.now(
) yesterday = today - timedelta(days=1)
this_week_start = today - timedelta(days=today.weekday())
this_week_end = today + timedelta(days=
6-today.weekday())
this_month_start =
str(datetime.datetime(today.year, today.month,1)
) this_month_end =
str(datetime.datetime(today.year, today.month +1,
2)- timedelta(days=1)
) tomorrow =
str(datetime.datetime(today.year, today.month, today.day+1)
) today =
str(datetime.datetime(today.year, today.month, today.day)
) yesterday=
str(datetime.datetime(yesterday.year, yesterday.month, yesterday.day)
) this_week_start =
str(datetime.datetime(this_week_start.year, this_week_start.month, this_week_start.day)
) this_week_end =
str(datetime.datetime(this_week_end.year, this_week_end.month, this_week_end.day+1)
)return
#計算token得到url
defgetapi()
: token=json.loads(requests.get(
.text)
.get(
'access_token'
) url=
''+token
return url
#傳送請求獲取日誌列表
defgetsearch
(url,index,start_time,end_time)
: send_json=
result=requests.post(url=url,data=json.dumps(send_json)
, headers=
) res=json.loads(result.text)
return res
#處理獲取的資料,具體按需根據釘釘開發文件編寫
defaddstore
(peps,datalist)
:for data in datalist:
pep_name=data[
'creator_name'
] pep_contents=data[
'contents'
]for content in contents:
'key'
),content.get(
'value'))
defgetyesterdaystore()
: calc_time=gettime(
) calc_timestamp=gettimestamp(calc_time[
'yesterday'
],calc_time[
'today'])
url=getapi();
peps=
#第一次查詢,游標設為0
res=getsearch(url,
0,calc_timestamp[
'start_time'
],calc_timestamp[
'end_time'])
if res.get(
'result'
).get(
'data_list')!=
: addstore(peps,res.get(
'result'
).get(
'data_list'))
#迴圈查詢到最後一頁
while
(res.get(
'result'
).get(
'has_more')==
true):
#得到游標
index=res.get(
'result'
).get(
'next_cursor'
) res=getsearch(url,index,calc_timestamp[
'start_time'
],calc_timestamp[
'end_time'])
if res.get(
'result'
).get(
'data_list')!=
: addstore(peps,res.get(
'result'
).get(
'data_list'))
return peps
if __name__ ==
'__main__'
:print
(len
(getyesterdaystore())
)
python開發釘釘小程式 (一)獲取token
1 在工程中加入釘釘python版sdk,注意目前這個版本都是基於python2的,要自己轉換成python3。使用python3自帶的2to3功能進行轉換 cmd 執行 跳轉到 2to3.py 檔案所在目錄 輸入 python 2to3.py w 命令後不要急著回車,先把你要轉換的python檔案...
釘釘考勤資料抓取 釘釘考勤答疑你關心的都在這裡
釘釘 那些事兒 答疑篇 01.釘釘資料是如何採集的?員工通過釘釘考勤或考勤機按 所排班次 加班時間段 出廠證時間段 請假時間段 前 後各刷卡1次,後台將採集到的刷卡日期 刷卡時間統一彙總到hr系統,與當日 班次時段 加班時段 去匹配,不一致則顯示遲到 早退 曠工 漏打卡等異常現象。注意 1 在考勤組...
釘釘開發系列 四 獲取JS票據
釘釘的客戶端開發和服務端有乙個重要的區別,服務端只需要得到access token就可以了,而客戶端還需要進一步換取jsticket。所以我們要進行客戶端的開發,第一步就是得到jsticket。又由於jsticket有7200秒的限制,而且每請求一次前面的就會失效,為此我們需要做乙個快取層來儲存。首...