阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用)

这篇具有很好参考价值的文章主要介绍了阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

阿里云盘自动每日签到,无需部署,无需服务器

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

二、效果展示:

阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用),其他,学习,阿里云

 

三、步骤:

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"; // 设置列号变量为 "J"
 
for (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 != "") { // 如果刷新令牌不为空
      // 发起网络请求-获取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(); // 将响应数据解析为 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-s=mobile",
                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: "fs8484848@163.com",
                  password: "QADSEMPKDHDAVWVD",
                  secure: true
                });
                mailer.send({
                  from: "阿里云盘签到<fs8484848@163.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: "fs8484848@163.com",
                  password: "QADSEMPKDHDAVWVD",
                  secure: true
                });
                mailer.send({
                  from: "阿里云盘签到<fs8484848@163.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 !== "") { // 如果刷新令牌不为空
        // 发起网络请求-获取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(); // 将响应数据解析为 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-s=mobile",
            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.com
  • SMTP端口号:465。必须填这个端口号,否则会报错

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

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

阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用),其他,学习,阿里云

15、关闭代码编辑框,点击【效率】-【高级开发】-【定时任务】阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用),其他,学习,阿里云 

 16、点击【创建任务】

阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用),其他,学习,阿里云

 

阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用),其他,学习,阿里云

17、设置每天运行的时间,选择刚刚选择的脚本,保存

阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用),其他,学习,阿里云 文章来源地址https://www.toymoban.com/news/detail-603632.html

到了这里,关于阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 云盘满了怎么办?阿里云服务器云盘扩容操作了解一下

    云盘满了怎么办?阿里云服务器云盘扩容操作了解一下

         1.背景      2.确定扩容云盘类型与控制台操作      3.ECS实例内部扩容操作说明          3.1 ECS实例内部执行扩容分区          3.2 ECS实例内部执行扩容文件系统      软件应用的数据库所在服务器磁盘使用率已经达到97%,服务器操作实例如下:      一旦使用

    2024年02月08日
    浏览(10)
  • 在Linux系统(服务器)使用阿里云盘服务快速上传下载文件

    在Linux系统(服务器)使用阿里云盘服务快速上传下载文件

    使用集群服务器的时候,尤其是当服务器有多个节点时有些复杂,连接集群我们一般用xshell,传输文件我们一般使用Xftp,一般对于单个节点服务器来说是方便的,使用Xftp还可以可视化本地和服务器端的文件,但当有多个节点时,这就不适用了,他不能选择节点,有局限,连接

    2024年02月04日
    浏览(13)
  • 阿里云服务器如何初始化云盘(跟换系统)?初始化云盘和跟换操作系统的区别?

    阿里云服务器如何初始化云盘(跟换系统)?初始化云盘和跟换操作系统的区别?

            若在Linux系统(服务器)上,环境安装出错,可通过云服务器上初始化云盘,回归硬盘初始化状态,进行重新安装。         作为小白的我们,第一次在服务器中下载安装软件,并部署环境,难免万般出错,然而想要完全卸载软件,甚是初始化到原来的系统环境,依

    2023年04月08日
    浏览(12)
  • linux挂在阿里云盘(webdav协议)给服务器扩容、备份数据等

    linux挂在阿里云盘(webdav协议)给服务器扩容、备份数据等

    如果不需要端口映射的话,可省略-p 每个容器都会有一个独立的内网ip,是和真机在同一个ip段,若本机想直接与docker容器通讯,并不需要映射端口 我的容器内网ip是 172.17.0.6 我的webdav的地址为: http://172.17.0.6:8080 Ubuntu/Debian下 CentOS下 如果遇到文件夹全是问号的情况,说明你之

    2024年02月12日
    浏览(14)
  • 阿里云服务器ECS中扩容云盘后磁盘容量没有增加的解决方法

    阿里云服务器ECS中扩容云盘后磁盘容量没有增加的解决方法

    ECS中扩容云盘后磁盘容量没有增加。 ECS控制台操作扩容只是扩大云盘的存储容量,不会扩容ECS实例的文件系统。还需要登录实例,然后进行扩容文件系统的操作。 •如果对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 •如果对实例

    2024年01月21日
    浏览(13)
  • 搭建免费的文件自动同步服务器,无公网IP外网远程访问【Syncthing私人云盘】

    搭建免费的文件自动同步服务器,无公网IP外网远程访问【Syncthing私人云盘】

    在数据爆炸的当下,每天都会产生海量的数据,这些数据可能是我们手机里新拍的照片、工作接收的文件档案、随手编辑写下的文档、或者新下载的视频等等,这些数据很快就能填满容量堪忧的智能设备(手机、平板等)。正因如此,云存储一时间风头无两,不仅能让这些海

    2024年02月06日
    浏览(11)
  • 2023最新开源版ChatGPT3.5小程序源码无需服务器搭建+用阿里云函数搭建

    2023最新开源版ChatGPT3.5小程序源码无需服务器搭建+用阿里云函数搭建

    开源版本gpt3.5无需服务器搭建(阿里云函数) 搭建前说明:此教程使用阿里云函数搭建,搜阿里云函数,开通即可 此教程只是函数使用阿里云,数据库什么的不用动,如果你之前有版本上线,直接复制那个版本的数据库账号密码填写到新搭建的阿里云函数即可保留用户数据

    2024年02月11日
    浏览(16)
  • 结合cpolar内网工具,实现无需部署到公网服务器

    转载自cpolar极点云文章:本地Linux 部署 Dashy 并远程访问 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航页。一款功能超强大,颜值爆表的可定制

    2024年02月12日
    浏览(15)
  • 真没想到啊!无需服务器,五分钟部署公众号机器人

    真没想到啊!无需服务器,五分钟部署公众号机器人

    大家好,我是编程哥。一个寻求破圈,不断淬炼自己的人,关注我一起进步。 目前各大模型都比较火,作为一名程序员,对大模型的了解也是蠢蠢欲动,尤其是对于机器人自动问答这一项。所以在朋友的推荐下,了解了一个无需服务器,快速搭建公众号机器人的教程,现在分

    2024年02月03日
    浏览(10)
  • UE5.1 像素流送公网部署无需GPU服务器

    UE5.1 像素流送公网部署无需GPU服务器

    因为工作需要最近在做虚幻引擎5.1这方面的部署,简单记录一下最近学习的一点知识。 本文参考:虚幻引擎官网文档 UE5像素流送原理及多用户公网部署小白教程202211022220 像素流送就是在云端服务器上运行虚幻引擎应用程序,通过WebRTC将渲染的帧和音频流送到浏览器和移动设

    2024年02月07日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包