定时企业微信打卡

HAMI_9603343943 · 11 小时前

回答

Hamibot AI
1
· 11 小时前

Hamibot 实现定时企业微信打卡方案

一、实现思路

使用 Hamibot 的定时任务功能 + 自动化脚本,实现企业微信自动打卡。主要步骤:

  1. 设置定时触发器(每天指定时间执行)
  2. 启动企业微信应用
  3. 导航到工作台打卡页面
  4. 执行打卡操作
  5. 记录打卡结果

二、脚本代码示例

// 文档地址 https://docs.hamibot.com/

auto.waitFor();

// 配置参数
var WORK_WECHAT_PACKAGE = "com.tencent.wework";
var CLOCK_IN_TIME = "08:50"; // 上班打卡时间
var CLOCK_OUT_TIME = "18:10"; // 下班打卡时间

// 主函数
function main() {
    toastLog("开始执行企业微信打卡");
    
    // 请求截图权限
    if (!requestScreenCapture()) {
        toastLog("没有授予 Hamibot 屏幕截图权限");
        hamibot.exit();
    }
    
    // 启动企业微信
    launchApp("企业微信");
    sleep(3000);
    
    // 进入工作台
    var workbench = text("工作台").findOne(5000);
    if (workbench) {
        workbench.click();
        sleep(2000);
    }
    
    // 查找打卡入口
    var clockIn = text("打卡").findOne(5000);
    if (clockIn) {
        clockIn.click();
        sleep(3000);
    }
    
    // 执行打卡
    var clockButton = text("上班打卡").findOne(5000);
    if (!clockButton) {
        clockButton = text("下班打卡").findOne(5000);
    }
    
    if (clockButton && clockButton.exists()) {
        clockButton.click();
        sleep(2000);
        toastLog("打卡成功");
        
        // 截图保存记录
        var path = "/sdcard/Hamibot/打卡记录/" + new Date().getTime() + ".png";
        captureScreen();
        images.save(captureScreen(), path);
        toastLog("打卡记录已保存:" + path);
    } else {
        toastLog("未找到打卡按钮,可能已打卡");
    }
    
    hamibot.exit();
}

// 执行主函数
main();

三、设置定时任务

方式 1:使用 Hamibot 触发器

  1. 在 Hamibot 控制台创建脚本
  2. 添加触发器,选择「定时触发」
  3. 设置执行时间(如工作日 08:50 和 18:10)
  4. 绑定设备并启用

方式 2:使用 timers 模块(脚本内定时)

// 文档地址 https://docs.hamibot.com/

// 设置每天定时检查
var checkInterval = setInterval(function() {
    var now = new Date();
    var hours = now.getHours();
    var minutes = now.getMinutes();
    
    // 上班打卡时间检查
    if (hours === 8 && minutes === 50) {
        doClockIn("上班");
    }
    
    // 下班打卡时间检查
    if (hours === 18 && minutes === 10) {
        doClockIn("下班");
    }
}, 60 * 1000); // 每分钟检查一次

function doClockIn(type) {
    toastLog(type + "打卡时间到");
    // 调用打卡逻辑
    main();
}

四、找图方式打卡(更稳定)

// 文档地址 https://docs.hamibot.com/

auto.waitFor();

if (!requestScreenCapture()) {
    toastLog("没有授予 Hamibot 屏幕截图权限");
    hamibot.exit();
}

sleep(1000);

// 启动企业微信
launchApp("企业微信");
sleep(5000);

// 读取打卡按钮图片模板
var clockImg = images.read("/sdcard/打卡按钮.png");

// 截图找图
var p = findImage(captureScreen(), clockImg, {
    region: [0, 50],
    threshold: 0.8,
});

if (p) {
    click(p.x, p.y);
    toastLog("打卡成功");
} else {
    toastLog("未找到打卡按钮");
}

hamibot.exit();

五、注意事项

项目 说明
权限 需授予无障碍服务、截图权限、自启动权限
设备 建议专用手机,保持常亮或定时唤醒
网络 确保执行时网络正常
企业微信版本 不同版本界面可能有差异,需调整定位方式
打卡范围 部分公司需要 GPS 定位,需确保设备在打卡范围内
异常处理 建议添加打卡结果通知,便于确认执行情况

六、最佳实践建议

  1. 提前执行:设置打卡时间比要求时间提前 5-10 分钟,避免网络延迟
  2. 结果通知:打卡完成后发送通知到微信或邮件,确认执行结果
  3. 日志记录:保存每次打卡的时间和截图,便于追溯
  4. 容错机制:添加重试逻辑,首次失败后间隔重试 2-3 次
  5. 定期检查:每周检查脚本执行情况,确保功能正常

七、常见问题

Q: 脚本执行后没有反应?

  • 检查无障碍服务是否开启
  • 确认企业微信已登录
  • 查看 Hamibot 日志输出

Q: 找不到打卡按钮?

  • 企业微信版本更新导致界面变化
  • 使用找图方式替代文字定位
  • 重新录制界面元素

Q: 定时任务不执行?

  • 检查设备是否被系统杀后台
  • 设置设备白名单,允许自启动
  • 确认触发器配置正确

如需进一步帮助,可查看 Hamibot 官方文档或联系技术支持。

ℹ️ 本回答由 AI 生成,内容仅供参考