以下教程皆为搬运
执行思路:使用金山文档的每日定时任务,执行阿里云盘签到接口。
无需部署,无需服务器,每个月更新一次token。
在看此篇内容前一定要看这篇内容:小小猪:阿里云盘自动每日签到,无需部署,无需服务器
根据使用者反馈将更新以下代码与内容,以及新增功能介绍和已知问题修复,不好轻喷,我希望得到友善的反馈,以便改进自己。
1.日志效果展示:图片1
2.邮箱效果展示:图片2
3.表格创建:图片3
4.多账号单独管理:图片4
修改后模版:https://kdocs.cn/l/ceQR4HpZ6op1
5.新增内容:
新增给多账号发送邮件
实现原理:使用循环变量来读取表单中的邮箱地址,直到遇到空值为止。每次读取到一个邮箱地址,都将其添加 到jsyxList数组中。然后,通过循环遍历jsyxList数组,并为每个邮箱地址发送邮件。
新增每个人的签到内容只会发送给同一行的对应邮箱地址
实现原理:将循环的范围从2到20改为对于每一行数据,获取对应的refresh_token、sflq和jsyx的值,并进行相应的判断和处理。如果refresh_token、sflq和jsyx的值符合条件(不为空且需要领取奖励且有接收邮箱地址),则进行签到和发送邮件的操作。签到成功后,将相关的签到内容存储在value变量中,然后将其发送给对应的邮箱地址。
新增邮件发送状态,监测发送邮件成功与失败
实现原理:在签到成功后使用log函数单独打印了”账号:13X***XXX-签到成功”的日志。然后,在发送邮件时,在调用log函数之前将签到内容存储在value变量中,并使用了try…catch语句来捕获邮件发送时可能发生的错误。在成功发送邮件时,会将成功信息记录到日志中,而在发送失败时,会将失败的具体错误信息记录到日志中。
新增每月最后一天,自动领取未领取的奖励
实现原理:使用 Date 对象获取当前日期和时间信息,并通过相关方法获得当前日期的字符串表示和月份的最后一天。然后,通过 for 循环遍历奖励数据的行,逐行获取相关数据进行处理。
6.代码对比:
对比最初的代码,以下是对代码进行的优化和改进的列表:
引入日期时间处理:添加了获取当前日期并格式化的功能,使用toLocaleDateString方法获取当前日期,并将其作为签到通知的主题一部分。
函数封装:将延迟等待的逻辑封装成了sleep函数,用于等待一段时间。这使得代码更加模块化和可读性更高。
错误处理和异常捕获:在发起网络请求和其他关键操作中增加了错误处理和异常捕获的逻辑,以便在出现错误时能够提供错误提示并及时终止代码的执行。
优化日志输出:在代码中添加了日志输出函数log,用于将信息打印到控制台,并在发送邮件时打印相应的状态和错误信息。
变量命名优化:对部分变量进行了更具描述性的命名,使代码更易读。
代码结构清晰:3.0代码使用了更具描述性的变量命名,并将不同功能的代码块进行了适当的分离,提高了代码的可读性和可维护性。
循环遍历优化:使用了let关键字声明循环变量row,避免了变量作用域的问题。同时,将循环起始值和结束条件直接写在循环语句中,简化了代码。
列索引灵活配置:通过在代码中定义变量tokenColumn、signInColumn等,可以根据需求方便地修改Excel表格中各列的索引,增加了代码的可配置性。
异常处理改进:对于网络请求获取token和领取奖励的部分,添加了try-catch语句来捕获可能出现的异常,并给出相应的错误提示信息,提高了代码的健壮性。
邮件发送优化:根据不同的条件和配置,灵活地选择使用自定义邮箱还是默认的SMTP邮箱发送邮件。使用了模板字符串和配置变量,简化了邮件发送部分的代码。
综上所述,对代码进行了结构优化、错误处理、日志输出优化以及变量命名优化,提高了代码的可读性、可维护性和错误处理能力,使得代码更加健壮和易于使用。
7.修改后的代码:
var myDate = new Date(); // 创建一个表示当前时间的 Date 对象
var data_time = myDate.toLocaleDateString(); // 获取当前日期的字符串表示
function sleep(d) {
for (var t = Date.now(); Date.now() – t