执行思路

使用金山文档的每日定时任务,执行阿里云盘签到接口。

无需部署,无需服务器,每个月更新一次token。

先看本人的自动签到效果:

img

废话不多说,方法如下:

进入金山文档网页版

img

新建

随便新建一个空表格,点击【效率】-【高级开发】-【AirScript脚本编辑器】

img

创建脚本

点击【创建脚本】-【文档共享脚本】

img

命名

创建成功后随便命名,我这里命名为:阿里云盘签到

img

添加服务

点击【服务】-【添加服务】

img

将三个服务全部添加

img

添加代码

将以下代码复制到编辑器中

 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.163.com"
     var zdy_post = 465
     var zdy_username = "fs8484848@163.com"
     var zdy_pasd = "QADSEMPKDHDAVWVD"
   }
 ​
     // 配置发送邮箱
 ​
   let mailer = SMTP.login({
     host: zdy_host, // 邮箱 的SMTP服务器的域名
     port: zdy_post,
     username: zdy_username, // 邮箱地址
     password:zdy_pasd, // 邮箱的SMTP密码,非密码
     secure: true
   });
 ​
   
   if(jsyx != "fs8484848@163.com"){
     try{
       mailer.send({
           from: "阿里云盘签到<"+zdy_username+">", // 发件人
           to: jsyx, // 收件人
           subject: "阿里云盘签到通知-"+data_time, // 主题
           text: value, // 文本
       })
     }catch(error){
       console.log("发送邮件失败"+error)
     }
   }else{
     console.log("不可发送至该邮箱")
   }
 }

获取 refresh_token

从浏览器中获取 refresh_token 的值:浏览器登录阿里云盘

img

填写 refresh_token

将refresh_token 的值复制到表格中,(A2-A20)可以写入多个账号的refresh_token

img

填写表格内容

1、填写是否领取奖励(是的话会自动领取签到奖励,为否的话只签到,需要用的时候自己手动领取签到奖励)

2、填写是否发送邮箱通知,发送邮箱通知的话,要写入接收邮箱的地址,不发送就不用写

3、填写是否自定义发送邮箱,这里推荐会弄SMTP的人自己填写自己的发送邮箱配置(发送和接收的邮箱可以相同),不会弄的人就写否或者不写就好了,我在代码里写了一个发送邮箱,但是邮箱有每日限制发送数量,可能会有接收不到邮件的情况。

img

上面表格中,代码只读取框住的部分,位置写对就行,其他地方无所谓

保存运行

脚本中,点击上方的【保存】按钮,再点击【运行】按钮

img

确保下方日志是成功的后进行下一步

创建定时任务

关闭代码编辑框,点击【效率】-【高级开发】-【定时任务】

img

点击【创建任务】

img

设置定时任务

设置每天运行的时间,选择刚刚选择的脚本,保存,大功告成

img

成品展示

img

再次建议:发送邮箱的SMTP填写自己的邮箱配置,原本没想到会有这么多人用,但现在有点出乎意料,我那个邮箱的每日发送额度不够哇。