执行思路:使用金山文档的每日定时任务,执行阿里云盘签到接口。
无需部署,无需服务器,每个月更新一次token。
先看本人的自动签到效果:
原文: https://zhuanlan.zhihu.com/p/629476969
1、进入金山文档网页版
2、随便新建一个空表格,点击【效率】-【高级开发】-【AirScript脚本编辑器】
3、点击【创建脚本】-【文档共享脚本】
\
4、创建成功后随便命名,我这里命名为:阿里云盘签到
5、点击【服务】-【添加服务】
6、将三个服务全部添加
7、将以下代码复制到编辑器中
var myDate = new Date();
var data_time = myDate.toLocaleDateString()
function sleep(d){
for(var t = Date.now();Date.now() - t <= d;);
}
var value= ""
for (let ii = 2; ii <= 20; ii++){
dyg = "A"+ii
var refresh_token = Application.Range(dyg).Text
if(refresh_token != ""){
// 发起网络请求-获取token
let data = HTTP.post("https://auth.aliyundrive.com/v2/account/token",
JSON.stringify({
"grant_type": "refresh_token",
"refresh_token":refresh_token
})
)
data = data.json()
var access_token = data['access_token']
var phone = data["user_name"]
if (access_token == undefined){
var value ="单元格【"+dyg+"】内的token值错误,程序执行失败,请重新复制正确的token值"+"\n"
}else{
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()
var signin_count = data2['result']['signInCount']
var value =value+ "账号:"+data["user_name"]+"-签到成功, 本月累计签到"+ signin_count+"天"+"\n"
}catch{
var value ="单元格【"+dyg+"】内的token签到失败"+"\n"
return
}
sleep(1000)
var sflq = Application.Range("B"+ii).Text
if (sflq == "是"){
try{
// 领取奖励
let data3 = HTTP.post(
"https://member.aliyundrive.com/v1/activity/sign_in_reward?_rx-s=mobile",
JSON.stringify({"signInDay": signin_count}),
{headers:{"Authorization":access_token2}}
)
data3=data3.json()
var value = value +"本次签到获得"+data3["result"]["name"] +","+data3["result"]["description"]+"\n"
}catch{
var value = value+ "账号:"+data["user_name"]+"-领取奖励失败"+"\n"
}
}else{
value = value +" 奖励待领取"+"\n"
}
}
}
}
console.log(value)
var sftz = Application.Range("E"+1).Text
if (sftz=="是"){
var jsyx = Application.Range("E"+2).Text
var zdyfs = Application.Range("H"+1).Text
if (zdyfs == "是"){
var zdy_host = Application.Range("H"+2).Text
var zdy_post =Number(Application.Range("H"+3).Text)
var zdy_username = Application.Range("H"+4).Text
var zdy_pasd = Application.Range("H"+5).Text
}else{
var zdy_host = "smtp.111.com"
var zdy_post = 465
var zdy_username = "[email protected]"
var zdy_pasd = "t9KmeXWxJza4JBYA"
}
// 配置发送邮箱
let mailer = SMTP.login({
host: zdy_host, // 邮箱 的SMTP服务器的域名
port: zdy_post,
username: zdy_username, // 邮箱地址
password:zdy_pasd, // 邮箱的SMTP密码,非密码
secure: true
});
if(jsyx != "[email protected]"){
try{
mailer.send({
from: "阿里云盘签到<"+zdy_username+">", // 发件人
to: jsyx, // 收件人
subject: "阿里云盘签到通知-"+data_time, // 主题
text: value, // 文本
})
}catch(error){
console.log("发送邮件失败"+error)
}
}else{
console.log("不可发送至该邮箱")
}
}
8、从浏览器中获取 refresh_token 的值:浏览器登录阿里云盘
9、将refresh_token 的值复制到表格中,(A2-A20)可以写入多个账号的refresh_token
10、填写表格内容:
10.1:填写是否领取奖励(是的话会自动领取签到奖励,为否的话只签到,需要用的时候自己手动领取签到奖励)
10.2:填写是否发送邮箱通知,发送邮箱通知的话,要写入接收邮箱的地址,不发送就不用写
10.3:填写是否自定义发送邮箱,这里推荐会弄SMTP的人自己填写自己的发送邮箱配置(发送和接收的邮箱可以相同),不会弄的人就写否或者不写就好了,我在代码里写了一个发送邮箱,但是邮箱有每日限制发送数量,可能会有接收不到邮件的情况。