怎么在需要定位的情况下用这个工具对飞书进行打卡,具体步骤是?

HAMI_0864671812 · 2 天前

回答

Hamibot AI
1
· 2 天前

飞书定位打卡的完整步骤如下:

准备工作

1. 确保权限已开启

权限 开启方法
无障碍服务 设置 → 无障碍 → Hamibot → 开启
读取位置信息 首次运行脚本时弹窗授权
后台弹出界面 设置 → 应用 → Hamibot → 允许

2. 确保 GPS 开启

手机顶部下拉通知栏,开启定位/GPS


脚本代码

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

auto();
auto.waitFor();

// 获取定位函数
function getLocation() {
    try {
        var locationManager = context.getSystemService(android.content.Context.LOCATION_SERVICE);
        var criteria = new android.location.Criteria();
        criteria.setAccuracy(android.location.Criteria.ACCURACY_FINE);
        
        var provider = locationManager.getBestProvider(criteria, true);
        if (!provider) {
            return null;
        }
        
        var location = locationManager.getLastKnownLocation(provider);
        if (location) {
            return {
                latitude: location.getLatitude(),
                longitude: location.getLongitude()
            };
        }
    } catch (e) {
        log("获取位置失败: " + e);
    }
    return null;
}

function main() {
    toastLog("=== 飞书定位打卡开始 ===");
    
    // 1. 获取当前位置
    toastLog("正在获取定位...");
    var location = getLocation();
    if (location) {
        toastLog("定位成功: " + location.latitude.toFixed(4) + ", " + location.longitude.toFixed(4));
    } else {
        toastLog("定位失败,请检查GPS是否开启");
    }
    
    // 2. 打开飞书
    toastLog("正在打开飞书...");
    if (!launchApp("飞书")) {
        launch("com.ss.android.lark");
    }
    sleep(5000); // 等待飞书加载
    
    // 3. 点击"工作台"
    var workTab = text("工作台").findOne(3000);
    if (workTab) {
        workTab.click();
        toastLog("进入工作台");
        sleep(2000);
    }
    
    // 4. 找到并点击"考勤打卡"
    toastLog("寻找考勤打卡...");
    var attendance = text("考勤打卡").findOne(5000) ||
                     textContains("打卡").findOne(5000);
    
    if (attendance) {
        attendance.click();
        toastLog("进入考勤打卡");
        sleep(3000);
    } else {
        toastLog("未找到考勤打卡入口");
        exit();
    }
    
    // 5. 处理可能弹出的窗口
    var closeBtn = text("关闭").findOne(1000) ||
                   text("下次再说").findOne(1000);
    if (closeBtn) {
        closeBtn.click();
        sleep(500);
    }
    
    // 6. 点击打卡按钮
    toastLog("执行打卡...");
    var punchBtn = textContains("上班打卡").findOne(3000) ||
                   textContains("下班打卡").findOne(3000) ||
                   textContains("打卡").clickable(true).findOne(3000);
    
    if (punchBtn) {
        punchBtn.click();
        toastLog("打卡按钮已点击");
        sleep(2000);
        
        // 7. 确认打卡成功
        var success = textContains("打卡成功").findOne(3000) ||
                      textContains("已打卡").findOne(3000);
        if (success) {
            toastLog("✅ 打卡成功!");
        } else {
            toastLog("请确认打卡结果");
        }
    } else {
        toastLog("未找到打卡按钮,可能已打卡或不在打卡时间");
    }
    
    toastLog("=== 打卡流程结束 ===");
}

main();

使用步骤

步骤 操作
1 确保手机 GPS 已开启
2 确保飞书已登录账号
3 在 Hamibot 客户端运行脚本
4 首次运行会请求位置权限,选择「始终允许」
5 脚本自动获取定位并打开飞书完成打卡

注意事项

问题 解决方法
定位失败 检查 GPS 是否开启
打卡失败 飞书版本更新可能导致界面变化,需用布局分析调整
人脸/拍照打卡 脚本无法自动完成,需人工配合
不在打卡范围 确保手机在公司定位范围内

定时自动打卡

如需每天自动打卡:

  1. 在 Hamibot 控制台创建定时任务
  2. 设置触发时间(如每天 08:55)
  3. 选择设备和脚本
  4. 系统自动执行

如果飞书界面有变化,可以用布局分析工具查看按钮位置,修改脚本中的选择器。

参考文档:https://docs.hamibot.com/

ℹ️ 内容由 AI 生成,可能不准确,请注意核实