georgehuan1994 / dingding-automatic-clock-in Goto Github PK
View Code? Open in Web Editor NEW钉钉全自动打卡脚本,基于auto.js,免root,适用于蓝牙考勤机
钉钉全自动打卡脚本,基于auto.js,免root,适用于蓝牙考勤机
小米8(,MIUI11,Android 10),进入钉钉应用详情时无法获取到结束运行的控件,导致没法重新启动钉钉
建议增加外勤打卡功能
把程序停留在应用选择界面,自己打开网易邮箱大师。
也是没权限上传不了附件
但是如果选择其他应用,比如钉钉又是可以把文件发送出去的。
而且从文件管理器手动分享文件,用网易邮箱大师也能发出去。
好怪
有时候没登录一直在死循环signIn这个函数,是因为et_pwd_login这个获取不到吗,但是钉钉界面确实在登录页,很奇怪。顺便想问下有什么工具可以查看组件id名?我搞前端的,对安卓不是太懂。。。
楼主,测试了一下,如果加入了多组织,会停止在多组织悬浮选择框处,要手动选择
你好,能增加微信的例子嘛,我现在打卡完毕后,可以进入微信页面了,但是无法进入指定人页面进行发送消息。
更改了对应的配置信息如的dingding账号密码等之类的,测试运行一下DingDing-Automatic-Clock-in.js 却发现报错了。麻烦看一下是啥原因?
[/storage/emulated/0/脚本/DingDing-Automatic-Clock-in.js]运行结束,用时0.070000秒
20:44:30.083/V: 开始运行[/storage/emulated/0/脚本/DingDing-Automatic-Clock-in.js]
20:44:30.130/D: { major: 4, minor: 1, revision: 0, buildType: 100, build: 1 } { major: 4, minor: 1, revision: 1, buildType: 0, build: 2 }
20:44:30.142/E: Wrapped java.lang.NullPointerException: Attempt to read from field 'int android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object reference (/storage/emulated/0/脚本/DingDing-Automatic-Clock-in.js#72)
Wrapped java.lang.NullPointerException: Attempt to read from field 'int android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object reference
at /storage/emulated/0/脚本/DingDing-Automatic-Clock-in.js:72:0
cb_privacy是这个id错误吗?
大神你好,单位禁用了极速打卡,请问这个方法还能用吗?谢谢。VX:18660930615方便加下微信吗?
const BUNDLE_ID_QQ = "com.tencent.mobileqq"
111
我使用qq发送通知后,auto.js能够获取通知并且执行脚本,但是在打开钉钉后就已经自动打卡,无需连接考勤机,所以会导致执行到打卡界面后程序就不再有任何动作了,我等待几分钟后无果,查看脚本日志发现也只执行到了连接考勤机那一步,后面一直是“nul”,请问这个该怎么做,虽然我通过发送打卡后等待两分钟后在发送暂停,在等待之后发送查询也能够获取到打卡信息,但是这脚本的后续仍然没有执行,也没有自动发送消息,请问这种情况我应该怎么做?
监听消息能不能增加监听短信 我的qq时间长了 就收不到消息 不能及时打卡
这个是否需要常亮屏幕?还是可以关闭屏幕,唤醒时自己解锁屏幕打卡
一运行就报了这个,小白不懂,请问是安卓有版本限制?
[Extension Host] 01:25:40.094/D: 唤醒设备
workbench.desktop.main.js:62 [Extension Host] 01:25:40.106/I: 设备已唤醒
workbench.desktop.main.js:62 [Extension Host] 01:25:40.114/I: 设备已唤醒
workbench.desktop.main.js:62 [Extension Host] 01:25:42.115/D: 解锁屏幕
workbench.desktop.main.js:62 [Extension Host] 01:25:42.120/D: 解锁屏幕
workbench.desktop.main.js:62 [Extension Host] 01:25:44.169/I: 屏幕已解锁
workbench.desktop.main.js:62 [Extension Host] 01:25:44.198/E: Thread[ScriptThread-1[[remote]DingDing-Automatic-Clock-in.js] (Spawn-6),5]: ReferenceError: "PACKAGE_NAME_DD" is not defined. ([remote]DingDing-Automatic-Clock-in.js#352)ReferenceError: "PACKAGE_NAME_DD" is not defined. at signIn ([remote]DingDing-Automatic-Clock-in.js:352:0) at doClock ([remote]DingDing-Automatic-Clock-in.js:196:0) at [remote]DingDing-Automatic-Clock-in.js:123:0
workbench.desktop.main.js:62 [Extension Host] 01:25:44.493/I: 屏幕已解锁
workbench.desktop.main.js:62 [Extension Host] 01:25:44.501/E: Thread[ScriptThread-3[[remote]DingDing-Automatic-Clock-in.js] (Spawn-4),5]: ReferenceError: "PACKAGE_NAME_DD" is not defined. ([remote]DingDing-Automatic-Clock-in.js#352)ReferenceError: "PACKAGE_NAME_DD" is not defined. at signIn ([remote]DingDing-Automatic-Clock-in.js:352:0) at doClock ([remote]DingDing-Automatic-Clock-in.js:196:0) at [remote]DingDing-Automatic-Clock-in.js:123:0
这是啥原因··
小米5 MIUI10
能不能设置成,一天8个小时内打4次?
安卓版本:7.1
QQ版本:8.8.55
自动跳转到指定QQ联系人对话框就没有了,没有在输入框输入内容并点击发送
function sendQQMsg(message) {
console.log("发送QQ消息")
// brightScreen() // 唤醒屏幕
// unlockScreen() // 解锁屏幕
app.startActivity({
action: "android.intent.action.VIEW",
data: "mqq://im/chat?chat_type=wpa&version=1&src_type=web&uin=" + QQ,
packageName: "com.tencent.mobileqq",
});
waitForActivity("com.tencent.mobileqq.activity.SplashActivity")
// input("输入") // 不生效
console.log(setText("输入")); // 返回false,找不到输入框
id("input").findOne().setText(message);
id("fun_btn").findOne().click();
// home()
// sleep(1000)
// lockScreen() // 关闭屏幕
}
为了轻量化,结合了server酱的pushdeer
发送http请求 push通知到打卡机
而后将http请求封装到类似于iphone快捷指令或者安卓其他的快捷指令
一键完成试了下很爽
最近公司换了钉钉,我想着来这找找有没有解决之道,就发现了这个。但应该怎么用呢?.js文件好像无法下载,我复制了raw,在auto.js里新建了文件然后粘贴进去,运行报错。有点迷茫啊,纯粹的新手小白,希望您能给个教程或简单说一下应该怎么做
当界面处于autojs时运行代码可以正常打开应用,而当手机处于home界面则无法启动,请教一下大佬,这种情况该怎么下手去解决
请问下,我发现在执行click(device.width / 2, device.height * 0.560) 的时候感觉程序没点到那个打卡的按钮。怀疑是不是因为分辨率的关系实际点的是旁边的空白地方,不是打卡的按钮上。我应该如何得到这个打卡按钮的实际坐标并且写入程序中呢? 类似这种click(1440,900)?
息屏后无法打开钉钉,直接返回主屏幕,但是在auto.js界面就可以直接打开钉钉
小米手机MIUI13,早上打卡之后还停留在打卡页面,下午在进行打卡时打卡页面提示,请刷新页面后再打卡,往往需要杀掉进程,重新进入才行。
非必现问题。
我尝试在打卡后退一步回到钉钉消息页,既打卡后back(),在监听钉钉返回的考勤结果增加setTimeout,有时可以生效。
if (packageId == PACKAGE_ID_DD && text.indexOf("考勤打卡") >= 0) {
setTimeout(function () {
setStorageData("dingding", "clockResult", text)
threads.shutDownAll();
threads.start(function () {
switch (DEFAULT_MESSAGE_DELIVER) {
case PUSH_METHOD.QQ:
sendQQMsg(text);
break;
case PUSH_METHOD.Email:
sendEmail("考勤结果", text, cameraFilePath);
break;
case PUSH_METHOD.ServerChan:
sendServerChan("考勤结果", text);
break;
case PUSH_METHOD.PushDeer:
sendPushDeer("考勤结果", text);
break;
}
});
}, 5000);
return;
}
18:00:49.516/E: Wrapped java.lang.NullPointerException: Attempt to read from field 'int android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object reference (/storage/emulated/0/脚本/DingDing-Automatic-Clock-in.js#80)
Wrapped java.lang.NullPointerException: Attempt to read from field 'int android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object reference
at /storage/emulated/0/脚本/DingDing-Automatic-Clock-in.js:80:
第80行是这个代码
events.observeKey()
在钉钉联系人里没有『智能工作助理』。
因为手机充电时会自动升级到最新版本,网易邮箱大师7.7.3没有自动填入邮箱,导致卡在发送邮箱界面。
你好,请问外勤打卡怎么搞,加上填写备注。
刚接触,不懂怎么找到这两个按钮。
function signIn() {// 4.进入钉钉
var lgAc = false
var Lg = true
app.launchPackage(BUNDLE_ID_DD)
console.log("启动" + app.getAppName(BUNDLE_ID_DD) + "...")
//sleep(2*1000) // 等待钉钉启动
while(currentPackage()!=BUNDLE_ID_DD){
sleep(1000)
console.log("未启动APP重试")
app.launchPackage(BUNDLE_ID_DD)
}
while(Lg){
console.log(currentActivity())
switch (currentActivity())
{
case "android.widget.FrameLayout":
if (id("home_bottom_tab_text_highlight").exists())
{
console.log("已进入")
lgAc=true
Lg=false
} else {
console.log("启动APP等待中")
lgAc=false
}
break;
case "com.alibaba.android.user.login.SignUpWithPwdActivity":
console.info("账号未登录")
var account = id("et_phone_input").findOne()
account.setText(ACCOUNT)
console.log("输入账号")
var password = id("et_pwd_login").findOne()
password.setText(PASSWORD)
console.log("输入密码")
var btn_login = id("btn_next").findOne()
btn_login.click()
console.log("正在登陆...")
//com.alibaba.android.dingtalkbase.widgets.dialog.DDProgressDialog
break;
}
console.log(currentActivity())
sleep(1000)
if (lgAc==true) break
}
}
1、因为 进入 因机器 不同有的启动慢,有的启动快,所以 这里加的个循环控制
2、是进入 考勤 有些定位 快,有些定位慢,所以 也加了个循环
function InKaoQin(){// 6.进入考勤页
var url_scheme = "dingtalk://dingtalkclient/page/link?url=https://attend.dingtalk.com/attend/index.html"
if(CORP_ID != "") { url_scheme = url_scheme + "?corpId=" + CORP_ID }
var a = app.intent({
action: "VIEW",
data: url_scheme,
//flags: [Intent.FLAG_ACTIVITY_NEW_TASK]
});
app.startActivity(a);
console.log("正在进入考勤界面...")
while (null == textStartsWith("已进入考勤").findOne(1000)){
console.info("GPS")
sleep(1000)
}
console.info("GPS--OK")
if (null != textMatches("申请").clickable(true).findOne(3000)) {
console.info("已进入考勤界面")
}else{
console.log("未找到考勤界面...")
}
}
是要去掉锁屏密码吗
Wrapped android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
我在运行事件监听的时候遇到这样一个错误,怎么处理?
问下用thread能唤醒屏幕吗?
var hour1 = 08, min1 = 20, second1 = 30;
run();
//实时显示脚本运行时长,并对返回的时长与设定的时长进行判断
function run() { //声明运行函数
threads.shutDownAll();
threads.start(function () {
while (true) {
console.show();
console.log(new Date().getSeconds());
if ((new Date().getHours() * 1 == hour1 && new Date().getMinutes() * 1 == min1 ) {
if (!device.isScreenOn()) {
device.wakeUp();
sleep(1000);
swipe(500, 0, 500, 1900, 2000);
gotoDaKa();
back();
sleep(2000);
run();
}
else {
gotoDaKa();
back();
sleep(2000);
run();
}
}
sleep(1000);
}
});
}
ps:在不息屏的情况下执行没问题,但是在息屏threads好像没执行了,问下怎么解决?
没有Wi-Fi考勤机,直接连实验室Wi-Fi打卡,需要修改哪些参数呢?没接触过autojs,望不吝赐教。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.