河南建设工程信息网站,视频网站备案流程图,新闻源软文发布平台,南县网站建设一、前言
阿里云盘自动每日签到#xff0c;无需部署#xff0c;无需服务器
执行思路#xff1a;使用金山文档的每日定时任务#xff0c;执行阿里云盘签到接口。
二、效果展示#xff1a; 三、步骤#xff1a;
1、进入金山文档网页版
金山文档官网#xff1a;https:…一、前言
阿里云盘自动每日签到无需部署无需服务器
执行思路使用金山文档的每日定时任务执行阿里云盘签到接口。
二、效果展示 三、步骤
1、进入金山文档网页版
金山文档官网https://www.kdocs.cn/ 2、新建一个空表格
点击【效率】-【高级开发】-【AirScript脚本编辑器】 3、点击【创建脚本】-【文档共享脚本】 4、创建成功后随便命名 5、点击【服务】-【添加服务】 6、将三项服务全部添加 7、将以下代码复制到编辑器中
var myDate new Date(); // 创建一个表示当前时间的 Date 对象
var data_time myDate.toLocaleDateString(); // 获取当前日期的字符串表示function sleep(d) {for (var t Date.now(); Date.now() - t d;); // 使程序暂停执行一段时间
}function log(message) {console.log(message); // 打印消息到控制台// TODO: 将日志写入文件
}var tokenColumn A; // 设置列号变量为 A
var signInColumn B; // 设置列号变量为 B
var rewardColumn C; // 设置列号变量为 C
var emailColumn F; // 设置列号变量为 F
var sendEmailColumn G; // 设置列号变量为 G
var resultColumn J; // 设置列号变量为 Jfor (let row 2; row 20; row) { // 循环遍历从第 2 行到第 20 行的数据var refresh_token Application.Range(tokenColumn row).Text; // 获取指定单元格的值var sflq Application.Range(signInColumn row).Text; // 获取指定单元格的值var sflqReward Application.Range(rewardColumn row).Text; // 获取指定单元格的值var jsyx Application.Range(emailColumn row).Text; // 获取指定单元格的值var sendEmail Application.Range(sendEmailColumn row).Text; // 获取指定单元格的值var customEmailResult Application.Range(resultColumn row).Text; // 获取指定单元格的值var emailConfigured Application.Range(J1).Text; // 获取指定单元格的值var zdy_host Application.Range(J2).Text; // 获取指定单元格的值var zdy_post parseInt(Application.Range(J3).Text); // 获取指定单元格的值并转换为整数var zdy_username Application.Range(J4).Text; // 获取指定单元格的值var zdy_pasd Application.Range(J5).Text; // 获取指定单元格的值if (sflq 是) { // 如果“是否签到”为“是”if (refresh_token ! ) { // 如果刷新令牌不为空// 发起网络请求-获取tokenlet data HTTP.post(https://auth.aliyundrive.com/v2/account/token,JSON.stringify({grant_type: refresh_token,refresh_token: refresh_token}));data data.json(); // 将响应数据解析为 JSON 格式var access_token data[access_token]; // 获取访问令牌var phone data[user_name]; // 获取用户名if (access_token undefined) { // 如果访问令牌未定义log(单元格【 tokenColumn row 】内的token值错误程序执行失败请重新复制正确的token值);continue; // 跳过当前行的后续操作}try {var access_token2 Bearer access_token; // 构建包含访问令牌的请求头// 签到let data2 HTTP.post(https://member.aliyundrive.com/v1/activity/sign_in_list,JSON.stringify({ _rx-s: mobile }),{ headers: { Authorization: access_token2 } });data2 data2.json(); // 将响应数据解析为 JSON 格式var signin_count data2[result][signInCount]; // 获取签到次数var logMessage 账号 phone - 签到成功本月累计签到 signin_count 天;var rewardMessage ;if (sflqReward 是) { // 如果“是否领取奖励”为“是”if (sflq 是) { // 如果“是否签到”为“是”try {// 领取奖励let data3 HTTP.post(https://member.aliyundrive.com/v1/activity/sign_in_reward?_rx-smobile,JSON.stringify({ signInDay: signin_count }),{ headers: { Authorization: access_token2 } });data3 data3.json(); // 将响应数据解析为 JSON 格式var rewardName data3[result][name]; // 获取奖励名称var rewardDescription data3[result][description]; // 获取奖励描述rewardMessage rewardName - rewardDescription;} catch (error) {if (error.response error.response.data error.response.data.error) {var errorMessage error.response.data.error; // 获取错误信息if (errorMessage.includes( - 今天奖励已领取)) {rewardMessage - 今天奖励已领取;log(账号 phone - rewardMessage);} else {log(账号 phone - 奖励领取失败 errorMessage);}} else {log(账号 phone - 奖励领取失败);}}} else {rewardMessage - 奖励待领取;}} else {rewardMessage - 奖励待领取;}log(logMessage rewardMessage);if (sendEmail 是) { // 如果“是否发送邮件”为“是”try {let mailer;if (customEmailResult 是) { // 如果“是否自定义邮箱”为“是”var customEmail Application.Range(resultColumn row).Text; // 获取指定单元格的值if (emailConfigured 是) { // 如果配置了自定义邮箱mailer SMTP.login({host: zdy_host,port: zdy_post,username: zdy_username,password: zdy_pasd,secure: true});mailer.send({from: 阿里云盘签到 zdy_username ,to: customEmail,subject: 阿里云盘签到通知 - data_time,text: logMessage rewardMessage});} else { // 如果未配置自定义邮箱默认使用示例邮箱mailer SMTP.login({host: smtp.163.com,port: 465,username: fs8484848163.com,password: QADSEMPKDHDAVWVD,secure: true});mailer.send({from: 阿里云盘签到fs8484848163.com,to: customEmail,subject: 阿里云盘签到通知 - data_time,text: logMessage rewardMessage});}log(账号 phone - 已发送邮件至 customEmail);} else { // 如果“是否自定义邮箱”为“否”if (emailConfigured 是) { // 如果配置了自定义邮箱mailer SMTP.login({host: zdy_host,port: zdy_post,username: zdy_username,password: zdy_pasd,secure: true});mailer.send({from: 阿里云盘签到 zdy_username ,to: jsyx,subject: 阿里云盘签到通知 - data_time,text: logMessage rewardMessage});} else { // 如果未配置自定义邮箱默认使用示例邮箱mailer SMTP.login({host: smtp.163.com,port: 465,username: fs8484848163.com,password: QADSEMPKDHDAVWVD,secure: true});mailer.send({from: 阿里云盘签到fs8484848163.com,to: jsyx,subject: 阿里云盘签到通知 - data_time,text: logMessage rewardMessage});}log(账号 phone - 已发送邮件至 jsyx);}} catch (error) {log(账号 phone - 发送邮件失败 error);}}} catch {log(单元格【 tokenColumn row 】内的token签到失败);continue; // 跳过当前行的后续操作}} else {log(账号 phone 不签到);}}
}var currentDate new Date(); // 创建一个表示当前时间的 Date 对象
var currentDay currentDate.getDate(); // 获取当前日期的天数
var lastDayOfMonth new Date(currentDate.getFullYear(), currentDate.getMonth() 1, 0).getDate(); // 获取当月的最后一天的日期if (currentDay lastDayOfMonth) { // 如果当前日期是当月的最后一天for (let row 2; row 20; row) { // 循环遍历从第 2 行到第 20 行的数据var sflq Application.Range(signInColumn row).Text; // 获取指定单元格的值var sflqReward Application.Range(rewardColumn row).Text; // 获取指定单元格的值if (sflq 是 sflqReward 是) { // 如果“是否签到”和“是否领取奖励”均为“是”var refresh_token Application.Range(tokenColumn row).Text; // 获取指定单元格的值var jsyx Application.Range(emailColumn row).Text; // 获取指定单元格的值var phone 账号 phone; // 构建账号信息字符串if (refresh_token ! ) { // 如果刷新令牌不为空// 发起网络请求-获取tokenlet data HTTP.post(https://auth.aliyundrive.com/v2/account/token,JSON.stringify({grant_type: refresh_token,refresh_token: refresh_token}));data data.json(); // 将响应数据解析为 JSON 格式var access_token data[access_token]; // 获取访问令牌if (access_token undefined) { // 如果访问令牌未定义log(单元格【 tokenColumn row 】内的token值错误程序执行失败请重新复制正确的token值);continue; // 跳过当前行的后续操作}try {var access_token2 Bearer access_token; // 构建包含访问令牌的请求头// 领取奖励let data4 HTTP.post(https://member.aliyundrive.com/v1/activity/sign_in_reward?_rx-smobile,JSON.stringify({ signInDay: lastDayOfMonth }),{ headers: { Authorization: access_token2 } });data4 data4.json(); // 将响应数据解析为 JSON 格式var claimStatus data4[result][status]; // 获取奖励状态var day lastDayOfMonth; // 获取最后一天的日期if (claimStatus CLAIMED) {log(账号 phone - 第 day 天奖励领取成功);} else {log(账号 phone - 第 day 天奖励领取失败);}} catch {log(单元格【 tokenColumn row 】内的token签到失败);continue; // 跳过当前行的后续操作}} else {log(账号 phone 不签到);}}}log(自动领取未领取奖励完成。);
} 8、将模版复制到自己创建的表格中
签到模版https://kdocs.cn/l/ceQR4HpZ6op1 9、从浏览器中获取 refresh_token 的值
浏览器登录阿里云盘阿里云盘登录地址https://www.aliyundrive.com/ 或使用快捷指令获取token
//在控制台输入
var token JSON.parse(localStorage.getItem(token));
console.log(refresh_token:, token.refresh_token); 10、将refresh_token 的值复制到表格中
可以写入多个账号的refresh_token 11、填写表格内容
填写是否签到填写是否领取奖励是的话会自动领取签到奖励为否的话只签到当当前时间为每月最后一天自动领取未领取的奖励填写是否发送邮箱通知发送邮箱通知的话写入接收邮箱的地址不发送就填否单/多账号下只发送与同行对应账号相关内容填写是否自定义发送邮箱这里推荐会弄SMTP的人自己填写自己的发送邮箱配置发送和接收的邮箱可以相同不会弄的人就写否或者不写就好了我在代码里写了一个发送邮箱但是邮箱有每日限制发送数量可能会有接收不到邮件的情况。由于用户大量增加导致默认配置邮箱发送邮件已达到上线当日志中显示一下内容大概率为邮箱发送已达到上限所以强烈介意使用自己的邮箱配置教程已写在下方。 12、获取自己的SMTP这里我以网易邮箱为例
打开网易官网https://mail.163.com 13.QQ邮箱获取自己的SMTP
请查看这篇内容使用QQ邮箱发送邮件QQ邮箱的smtp设置
SMTP服务器smtp.qq.comSMTP端口号465。必须填这个端口号否则会报错
14、脚本中点击上方的【保存】按钮再点击【运行】按钮
确保下方日志是成功的后进行下一步 15、关闭代码编辑框点击【效率】-【高级开发】-【定时任务】 16、点击【创建任务】 17、设置每天运行的时间选择刚刚选择的脚本保存