精华内容
下载资源
问答
  • 企业微信打卡神器

    2018-11-01 23:34:36
    一个修改应用位置工具,可以用来测试打卡,修改正打卡位置不正确等问题,同时可以分享自己的位置给好友。
  • Android 钉钉、企业微信打卡小助手的源码;具体使用方法:安装个人端在自己手机上,公司端安装在放在公司的一台闲置手机上;打开公司端APP,复制ID粘贴到个人端上,就可以随时随地通过个人端发送消息给公司APP实现...
  • Android 钉钉、企业微信打卡小助手的APK;具体使用方法:安装个人端在自己手机上,公司端安装在放在公司的一台闲置手机上;打开公司端APP,复制ID粘贴到个人端上,就可以随时随地通过个人端发送消息给公司APP实现...
  • 企业微信的模拟打卡可以用这个,亲测有效,不会被查到, 不需要root,操作简单方便,内置视频教程,傻瓜也能学会。 自己用了三年了,一点儿问题都没有,妥妥的。
  • 下面就通过Python程序来实现自动打卡,原理很简单,用Python设置定时任务,然后通过adb操作手机,完成打卡功能,感兴趣的朋友跟随小编一起看看吧
  • 如何拉取企业微信打卡数据

    千次阅读 2020-07-02 14:47:39
    拉取企业微信打卡数据这个功能我很早就做了,对于我来说我感觉挺简单的,今天我想把他分享出来了,帮助更多有需要的人。 本文涉及到阿里巴巴的JsonObject的解析,可参考我的另一篇blog。 1)了解企业微信相关...

    前言: 

    本篇文章主要介绍 拉取企业微信打卡数据这个功能。

    本文涉及到阿里巴巴的JsonObject的解析,可参考我的另一篇blog

    1)了解企业微信相关文档

    本文中涉及的一些专业术语可以参考:https://work.weixin.qq.com/api/doc/90000/90135/90665#corpid

     

    拉取企业微信打卡数据在OA数据接口这块, 这块的功能逻辑主要是这样的,

    a.企业微信会提供一个接口给你,你需要传入你们公司对应的打卡应用的id 和 打卡应用的秘钥,

    b.通过发送post 请求,封装请求的参数,

    c.得到企业微信返回的数据,一般情况下数据为json,接下来就可以解析json

     

    打卡的Api文档地址:

    https://work.weixin.qq.com/api/doc/90000/90135/90262

    2)获取打卡数据

    可以看到:要做拉取打卡数据功能,我们首先需要获取AccessToken,获取到AccessToken 后我们需要传入用户id.     

     

    A.TestController

        @GetMapping(value = "/listPushCardData")
        public void listPushCardData() {
            //获取本地打卡数据
            pushCardService.listPushCardData();
        }

    B.PushCardServiceImpl

    package com.test.service;
    
    /**
     * @Author tanghh
     * @Date 2020/7/2 11:40
     */
    public interface PushCardService {
        /**
         * 获取打卡数据
         */
        void listPushCardData();
    }

    C.PushCardServiceImpl

    package com.test.service.impl;
    
    import com.alibaba.fastjson.JSONObject;
    import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
    import com.test.model.PushCardVo;
    import com.test.service.PushCardService;
    import com.test.util.DateUtil;
    import com.test.util.QiWeiParametersUtil;
    import com.test.wechat.SendRequest;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Service;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @Author tanghh
     * @Date 2020/7/2 11:40
     */
    @Service
    public class PushCardServiceImpl implements PushCardService {
    
        private Logger logger = LoggerFactory.getLogger(PushCardServiceImpl.class);
        /**
         * 获取打卡数据
         */
        /**
         * {
         * "opencheckindatatype": 3,
         * "starttime": 1492617600,
         * "endtime": 1492790400,
         * "useridlist": ["james","paul"]
         * }
         */
        @Override
        public void listPushCardData() {
            try {
                //1.获取打卡数据
                String accessToken = QiWeiParametersUtil.getPushCardAccessToken();
                //2.获取当天的开始时间和结束时间
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                String todayTime = simpleDateFormat.format(new Date());
                Map<String, Long> map = DateUtil.getStartTimeAndEndTime(todayTime);
                Long startTime = map.get("startTime");
                Long endTime = map.get("endTime");
    
                //3.封装请求参数
                PushCardVo vo = new PushCardVo();
                vo.setOpencheckindatatype(3);
                vo.setStarttime(startTime);
                vo.setEndtime(endTime);
                List userList = new ArrayList();
                userList.add("*****");
                vo.setUseridlist(userList);
                String jsonStr = JSONObject.toJSONString(vo);
                //4.发送请求
                String url = QiWeiParametersUtil.getPushCardUrl.replace("ACCESS_TOKEN",accessToken);
                JSONObject jsonObject = SendRequest.sendPost(url,jsonStr);
                List list = (List) jsonObject.get("checkindata");
                for (Object o : list) {
                    Map dataMap = (Map) o;
                    System.out.println("wifi的名字为:----"+dataMap.get("wifiname"));
                    System.out.println("用户id:----"+dataMap.get("userid"));
                    System.out.println("地址详情:----"+dataMap.get("location_detail"));
                    System.out.println("打卡类型:----"+dataMap.get("checkin_type"));
                }
    
    
    
    
            } catch (Exception e) {
                logger.error("获取打卡记录数据失败",e);
            }
        }
    }
    

    D.其中涉及的类

    QiWeiParametersUtil

    package com.test.util;
    
    import com.alibaba.fastjson.JSONObject;
    import com.test.wechat.SendRequest;
    
    /**
     * 企业微信参数配置类
     *
     * @Author: tanghh18
     * @Date: 2019/8/30 16:21
     */
    public class QiWeiParametersUtil {
        /**
         * 1.获取AccessToken
         */
        public static String getAccessTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={corpsecret}";
    
        /**
         * 发送企业微信AccessToken
         */
        public static String sendAccessTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN";
    
        /**
         * 上传临时文件素材
         * @param
         * @return
         */
        public static String uploadMediaUrl="https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE";
        /**
         * 本地打卡数据
         */
        public static String getPushCardUrl = "https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata?access_token=ACCESS_TOKEN";
    
        /**
         * 企业ID
         */
        public final static String corpId = "企业id";
    
        /**
         * 企业应用的id,整型。可在应用的设置页面查看(yes)项目测试(ebo0.2版本)
         */
        public final static int agentId = 1000049;
        /**
         * 应用secret
         */
        public static String secret = "yin";
        /**
         * 打卡应用的agentid
         */
        public static String punch_card_agentId = "3010011";
        /**
         * 打卡应用的secret
         */
        public static String punch_card_secret = "在打卡应用中可以看到";
    
        /**
         * 获得各种access_token
         *
         * @return
         */
        public static String getAccessToken() {
            String url = getAccessTokenUrl.replace("{corpid}", corpId).replace("{corpsecret}", secret);
            JSONObject departmentJson = SendRequest.sendGet(url);
            return departmentJson.getString("access_token");
        }
        /**
         * 获取打卡应用的Secret
         */
    
        public static String getPushCardAccessToken(){
            String url = getAccessTokenUrl.replace("{corpid}", corpId).replace("{corpsecret}", punch_card_secret);
            JSONObject pushCardJsonObject = SendRequest.sendGet(url);
            return pushCardJsonObject.getString("access_token");
        }
    }
    
     

    E.DateUtil

    package com.test.util;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @Author tanghh
     * @Date 2020/7/2 11:30
     */
    public class DateUtil {
        /**
         * 获取一天的开始时间和结束时间
         */
        public static Map<String,Long> getStartTimeAndEndTime(String dateTime) throws ParseException {
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            Map<String,Long>  map = new HashMap(3);
            Date date2 = format.parse(dateTime);
            // 一天的毫秒-1
            int dayMis = 1000 * 60 * 60 * 24;
            // 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
            // 当天的毫秒
            long curMillisecond = date2.getTime();
            // 当天最后一秒
            long resultMis = curMillisecond + (dayMis - 1);
            // 得到我需要的时间 当天最后一秒
            Date endDate = new Date(resultMis);
    
            //将数据保存到Map中
            map.put("startTime",date2.getTime()/1000);
            map.put("endTime",endDate.getTime()/1000);
            return map;
        }
    }
    

    SendRequest

    package com.test.wechat;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import java.io.*;
    import java.net.URL;
    import java.net.URLConnection;
    
    /**
     * 用来发送请求的类
     *
     * @Author: tanghh18
     * @Date: 2019/8/30 16:21
     */
    
    public class SendRequest {
        /**
         * 发送GET请求
         *
         * @param url
         * @return
         */
        public static JSONObject sendGet(String url) {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            HttpSession session = request.getSession();
            JSONObject jsonObject = null;
            StringBuffer sb = new StringBuffer();
            BufferedReader in = null;
            try {
                String urlName = url;
                URL realUrl = new URL(urlName);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
                //针对群晖NAS请求,加一个Cookie
                if (session.getAttribute("sid") != null) {
                    conn.addRequestProperty("Cookie", "id=" + session.getAttribute("sid"));
                }
                conn.setConnectTimeout(10000);
                // 建立实际的连接
                conn.connect();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                String line;
                while ((line = in.readLine()) != null) {
                    sb.append(line);
                }
                jsonObject = JSON.parseObject(sb.toString());
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
            } finally {
                // 使用finally块来关闭输入流
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException ex) {
                    System.out.println("关闭流异常");
                }
            }
            return jsonObject;
        }
    
    
        /**
         * 发送post请求(返回json)
         *
         * @param url
         * @param param
         * @return
         */
        public static JSONObject sendPost(String url, String param) {
            PrintWriter out = null;
            BufferedReader in = null;
            JSONObject jsonObject = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
    //            conn.addRequestProperty("Cookie", "stay_login=1 smid=DumpWzWQSaLmKlFY1PgAtURdV_u3W3beoei96zsXkdSABwjVCRrnnNBsnH1wGWI0-VIflgvMaZAfli9H2NGtJg id=EtEWf1XZRLIwk1770NZN047804");//设置获取的cookie
                // 获取URLConnection对象对应的输出流(设置请求编码为UTF-8)
                out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 获取请求返回数据(设置返回数据编码为UTF-8)
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream(), "UTF-8"));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
                jsonObject = JSONObject.parseObject(result);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (out != null) {
                        out.close();
                    }
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            return jsonObject;
        }
    
    }
    

    3) 测试拉取打卡数据

    访问:http://localhost:8084/listPushCardData

    本篇文章就到这里了 ,感谢阅读。

     

     

     

    展开全文
  • 对接企业微信打卡记录到系统中; 前期准备: 先实现企业微信成员id的绑定,才能实现对应上打卡记录对应的是哪个白码账号,参考之前的文章系统账号绑定企业微信成员id ,本文使用的接口请参考:...

    需求:

    对接企业微信的打卡记录到系统中;

    前期准备:

    先实现企业微信成员id的绑定,才能实现对应上打卡记录对应的是哪个白码账号,参考之前的文章系统账号绑定企业微信成员id ,本文使用的接口请参考:https://work.weixin.qq.com/api/doc/90000/90135/90262

    实现步骤:

    1. 登录企业微信管理后台,在应用管理找到打卡应用,点击“API”,获取一下Secret(需要到企业微信客户端查看);
      在这里插入图片描述
      在这里插入图片描述

    2. 再到我的企业页面,复制下面的企业ID;
      在这里插入图片描述

    3. 回到白码低代码开发平台的工作台,创建一个数据表,用于存储打卡记录,字段如下,分别对应接口的多个参数;
      在这里插入图片描述
      在这里插入图片描述

    4. 新建一个API,使用企业微信(内部应用)的模板,选择基础,填写上刚才复制的企业id和secret;
      在这里插入图片描述

    然后配置好输入输出参数,如下图所示;
    在这里插入图片描述

    1. 编写API代码,代码如下;
      在这里插入图片描述
    async function run($input, $output, $modules = modules) {
        const wxworkApi = $modules.wxworkApi;
        let userlist = $input.userlist;
        let useridlist = userlist.map(v=>v["608a51b617f01720c7525723"]);//用户表企业微信成员id字段field
        let data = {
            "opencheckindatatype": 3,
            "starttime": new Date($input.start_date).getTime() / 1000,
            "endtime": new Date($input.end_date).getTime() / 1000,
            "useridlist": useridlist.join(',')
        };
        //$output.data = data;
        let res = await wxworkApi.request({
            method: "post",
            url: "checkin/getcheckindata",
            data
        });
        $output.checkindata = res.checkindata;
    }
    
    1. 新建一个功能,用于获取打卡记录并录入到系统中;

    ①第一步使用获取集合的步骤,获取用户列表,不需要设置筛选条件,即可获取到全部用户;
    在这里插入图片描述

    ②第二步使用API的步骤,调用前面做好的API,获取打卡记录;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ③第三步使用编程,用于处理APi返回的打卡记录数据;
    在这里插入图片描述
    在这里插入图片描述

    async function runProcess($model = model, $plugin = plugin, $params) {
        let list = $params.list;
        await $model.log(list.length);
        for (let i = 0; i < list.length; i++) {
            let userid = list[i]["userid"];//成员id
            let checkin_time = list[i]["checkin_time"];//打卡时间戳
            let date = new Date(checkin_time*1000);
            let YY = date.getFullYear();
            let MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
            let DD = (date.getDate() + 1 <= 10 ? '0' + date.getDate() : date.getDate());
            let hh = (date.getHours() + 1 <= 10 ? '0' + date.getHours() : date.getHours());
            let mm = date.getMinutes() + 1 <= 10 ? '0' + date.getMinutes() : date.getMinutes();
            let datestr = YY + "-" + MM + DD;//打卡日期
            let time = hh + ":" + mm;//打卡时间
            let user = await $plugin.data.queryData("5eb9416bb75b4176eca49a19",{
                "608a51b617f01720c7525723":userid
            });//找到成员id对应的用户
            user = user.length > 0 ? user[0]._id : "";
            await $plugin.data.saveData("608a540fdec57120cee5bb17",{
                "608a545fdec57120cee5bb21":list[i]["exception_type"],//异常类型
                "608a54886d8eaf20d45d65cb":list[i]["location_title"],//打卡地点title
                "608a548019c20e20c8dc5756":datestr,
                "608a54c06d8eaf20d45d65d1":time,
                "608a541f17f01720c752574f":user,
                "608a545717f01720c7525756":list[i]["checkin_type"]//打卡类型
            });
        }
    }
    
    1. 最后将该功能发布到线上,再创建一个定时任务来调用这个功能,周期设定如下图;
      在这里插入图片描述

    实现效果:

    在这里插入图片描述

    展开全文
  • 最近接到一个类似钉钉打卡和企业微信打卡的项目。找我们开发的一个主要原因是,他们希望打卡记录能和具体的项目关联起来。后台在进行统计处理。钉钉和企业微信无法满足此功能。 涉及资料 1、企业微信定位功能。 ...

    背景
    最近接到一个类似钉钉打卡和企业微信打卡的项目。找我们开发的一个主要原因是,他们希望打卡记录能和具体的项目关联起来。后台在进行统计处理。钉钉和企业微信无法满足此功能。
    涉及资料
    1、企业微信定位功能。
    https://open.work.weixin.qq.com/api/doc/90000/90136/90504#%E8%8E%B7%E5%8F%96%E5%9C%B0%E7%90%86%E4%BD%8D%E7%BD%AE%E6%8E%A5%E5%8F%A3
    2、jqweui用来美化界面,让项目和微信界面看起来相对协调。
    http://www.jqweui.cn/
    主要问题
    1、jqweui的select是没有自带搜索功能的。要想实现搜索功能,把基础组件中的搜索栏和select结合起来使用。这里需要用到select的update方法,具体看文档。也就是搜索后更新下拉列表。
    2、select的change方法做好是用jqweiui封装起来的方法,利于获取回调的值。
    3、企业微信调用的授权采用easyWechat包来实现,非常快。页面上需要获取地理位置,用到企业微信的jssdk授权,有相关文档。如果采用框架模板输出,直接复制文档的js代码即可。
    jssdk授权文档地址:https://www.easywechat.com/docs/4.x/basic-services/jssdk
    4、获取企业微信用户信息文档:https://www.easywechat.com/docs/4.x/wework/oauth

    展开全文
  • 上班打卡是大多数上班狗每天都会做的事情,打卡的方式多种多样,越来越多企业通过企业微信进行考勤打卡,员工不用排队,直接在PC端或者手机端就可以进行打卡,高效又快捷。 但是面对新兴的打卡方式,有些企业员工也...

    企业微信考勤打卡

    上班打卡是大多数上班狗每天都会做的事情,打卡的方式多种多样,越来越多企业通过企业微信进行考勤打卡,员工不用排队,直接在PC端或者手机端就可以进行打卡,高效又快捷。

    但是面对新兴的打卡方式,有些企业员工也在钻空子进行打卡作弊:

    1、 代打卡

    考勤打卡都是通过设置企业上下班时间、考勤地点等多种条件对员工进行考勤打卡的,而有些员工让朋友使用手机代打卡,这样是可以显示你的考勤是正常的,但是管理者可以通过系统后台查看到打卡手机的ID号与你平时打开的手机ID不同,则是说明是有作弊的嫌疑。

    2、 模拟定位打卡

    有部分人想通过软件来模拟定位进行正常打卡,市面上提供虚拟定位打卡的软件已达百余种,其中不少软件已成为企业白领常用软件。

    企业进行考勤打卡的本质是为了对员工进行统一规范性管理。针对以上问题,下面我们先看一个案例,看看其他企业是如何解决企业微信打卡作弊的问题。

    青岛啤酒:精细化考勤管理,杜绝考勤作弊

    针对特殊情况的外勤任务,青岛啤酒借助企业微信上道一云考勤系统(点击本行文字可直接安装试用),启用外勤签到功能,员工建立外勤单,描述相关的外勤任务内容以及现场照片,HR在月底进行相应的统计,发放外勤补助。

    为了避免员工利用模拟定位打卡,青岛啤酒结合了道一云考勤打卡(点击本行文字可直接安装试用)的拍照上传功能,以及定时公告功能,建立了一个考勤汉字制度。每到打卡时间点,系统自动推送一个当天的打卡汉字,销售需要在现场和当天汉字一起自拍上传,才算打卡成功。与此同时,每条打卡记录都会通知到相应主管进行审阅。

    考勤打卡防作弊

    解决了外勤签到打卡的问题,那么日常签到打卡又怎么防止作弊呢?

    道一云考勤打卡(点击本行文字可直接安装试用)提供了软硬件结合多种考勤方式,除了地理位置考勤,企业还可以通过智能云考勤机(支持指纹识别、人脸识别等)、摇一摇考勤以及网络IP考勤等方式有效防止员工打卡作弊。

    考勤流程

    <全自动考勤流程>>

     

     

    如果想要了解企业微信更多功能,比如企业微信会话存档,员工离职客户继承,客户群管理等等功能,可以在道一云官网上进行查看。

    我们还准备了《2021企业微信生态白皮书》,为你深度剖析企业微信的价值、功能和亮点,让你成为最懂企业微信的人。

    企业微信白皮书

     

    领取方式:扫描下方二维码,添加小助手即可免费领取

    企业微信白皮书

    展开全文
  • C#获取企业微信打卡数据

    千次阅读 2020-05-05 11:48:14
    string token = Common.GetWeixinQYToken("企业ID", "打卡的secret"); string serviceAddress = string.Format("https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata?access_token={0}&body={1}", token, ...
  • <p>kettle新手,看完论坛相关帖子,仍无法进行实施,望各位大佬指点</p>
  • 企业微信打卡 该脚本用于 Hamibot,auto.js 未测试,安卓系统最低要求 7.0 使用要求 安卓系统最低要求 7.0 Hamibot 后台保活并联网,WiFi 设置锁屏不断开网络 手机取消指纹和密码,原因是仅做了点亮屏幕后的滑屏解锁 ...
  • 开发企业微信打卡API笔记

    千次阅读 2018-12-11 16:21:00
    获取企业微信打开API上面的数据 根据企业ID和打卡模块的secret获取access_token 打卡传参body为json格式的字符传 创建打卡对象把参数写入,useridlist为list格式。转json 返回数据 企业微信调用代码 ...
  • 企业微信打卡统计员工考勤

    千次阅读 2020-08-13 10:50:50
    【第一步】调用企业微信的api接口获取当天的打卡记录 (获取的打卡记录是根据自己提交的时间戳来获取的,我只获取当天的打卡记录,是因为设置了定时器,每天11点自动调用接口插入到数据库) 企业微信api地址 获取...
  • 利用kettle获取企业微信打卡数据

    千次阅读 2018-10-29 13:53:12
    利用kettle创建转换,把转换根据顺序执行,生成作业,通过计划任务定时执行作业,把企业微信打卡记录插入到本地数据库中。   一、先获取打卡应用和通讯录的access_token,由于access_token是2小时的有效期,...
  • 调用企业微信打卡记录

    千次阅读 2019-10-30 10:01:21
    logger.error("企业微信调用失败 HttpClientPost " + jsobj.getShort("errcode")); return ""; } } catch (IOException e) { logger.error("getPunchRecord Error{}", e); } return ""; }  
  • kettle实例(获取企业微信打卡数据并将数据入库)Kettle简介流程简介从数据库中取出人员信息处理人员信息获取人员打卡信息将打卡信息入库如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、...
  • Python实现钉钉/企业微信自动打卡

    千次阅读 多人点赞 2021-01-18 17:28:36
    每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用Python实现定时自动打卡。 1 前期工具准备 不用说的Python ...
  • 企业微信自动打卡脚本

    千次阅读 2021-08-10 16:24:22
    写了一个自动企业微信打卡的dos脚本(自己要在手机上开启自动打开,新设备养几天就变常用设备了),搞个定时任务每天早上执行一下就行,废话不多说,上脚本内容 f: cd adb adb shell input keyevent 26 adb shell ...
  • toast(‘企业微信已打开’);//消息提示 log(‘企业微信已打开’);//消息提示 click(“工作台”); sleep(500); while(!textContains(“健康上报”).exists()){ click(“中北天天报”); sleep(500); }; log(‘开始健康...
  • 企业微信服务商考勤机推广奖励政策.docx
  • # 滑动屏幕 os.popen("adb shell input swipe 300 2000 300 500") time.sleep(1) # 输入密码 os.popen("adb shell input text 密码") # 你的手机密码 time.sleep(1) def openwework(): """ 企业微信打卡 clock in ...
  • 每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用Python实现定时自动打卡。 1 前期工具准备 不用说的Python ...
  • C#获取微信打卡数据

    2020-05-12 10:49:22
    } else if (val == "3") { return "外出打卡" } } }, { title: '打卡地点', field: 'Location_Title' }, { title: '地点详情', field: 'Location_Detail' }, { title: '异常类型', field: 'Exception_Type', styler...
  • 本文演示利用企业微信群机器人,配置定时提醒群内所有人打卡。 一、添加机器人 建群后添加机器人,拿到Webhook地址: 二、编写Shell脚本 新建脚本文件workwx.sh,内容如下: #!/bin/bash curl '...
  • 由于企业微信打卡时需要定位,因此很多员工担心企业微信会泄露自己在工作之外的位置隐私。 前言 现在很多企业都有考勤打卡的要求,构成员工薪资的一部分。企业微信为了方便企业能高效快捷地统计员工的出勤...
  • 我看到会第一时间发给你 (对此APP有其他想法的也欢迎沟通) 介绍:进入app页面如果有需要悬浮窗权限,显示在其他应用的上层把他打开,总而言之有要权限的就打开就OK了,可支持钉钉和企业微信调起(要先选择使用钉钉...
  • 由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考
  • 前言 之前公司一直是弹性工作制 以工作任务为目标 ...首先先拿到企业微信的包名和钉钉的包名 这个无论你是adb命令实现 还是百度直接找 都很方便 ADB命令方式 依旧数据线连接手机,注意都是调试模式哈,不然电脑无权

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,090
精华内容 1,636
关键字:

企业微信打卡