Post

工具 - 将iZJU的PS课表导出为ics文件并导入至日历

通过Tampermonkey脚本将浙江大学iZJU PeopleSoft系统的课表导出为ICS格式文件,并导入到各种日历应用的详细教程。

工具 - 将iZJU的PS课表导出为ics文件并导入至日历

前言

背景故事:某一谈在跟dalao吃饭的时候,聊到课表的问题,dalao说ZJU本部是有人写脚本将课表导入到手机calendar中的,突发奇想,iZJU的PS既然有“打印机友好界面”,那是不是也可以一键将所有的日程导入到calendar?


相关的课表程序有很多,比如说iZJU小程序,支付宝。但是诸如iCloud Calendar或者outlook calendar还有google calendar,都不支持类似支付宝的“截图导入”功能,这些应用支持的是导入ics文件。另外,使用这些跟邮箱绑定的calendar还可以直接导入至手机自带的calendar应用,享受顶级的提醒服务。


我全程使用了Cursor来搭建本tampermonkey的脚本,仅使用将近30dollar的tokens,有机会我可以写一篇cursor等工具使用感受,还有测评等等。

如今的插件版本仅支持中文界面的peoplesoft,也就是你需要在课表界面的右上角将语言切换成简体中文,否则该工具会失效。

也请使用该脚本的同学可以帮我核对一下,使用脚本后导出的课表是否与ps上的课表完全一致!(这是不可能的,因为我帮你处理调休了,也正是这一步我可能出错)

让我们从零开始

1. 安装脚本

  1. 安装 Tampermonkey 浏览器扩展
  2. 访问链接安装脚本
  3. 打开浏览器扩展管理界面 → 打开开发者模式
    1. Google
    2. Edge
    3. Opera
  4. 转到油猴扩展设置
  5. 打开“允许用户运行脚本”(没有就不用)

img1 img2

2. 使用步骤

  1. 登录系统:访问浙大 PeopleSoft 选课系统 → 右上角显示English时登录(即用中文模式登录)
  2. 进入课表:选择【学期选课】→【我的每周课程表】
  3. 切换视图:选择【列表查看】
  4. 导出课表:点击页面右上角的”导出 ICS”按钮
  5. 导入日历:将下载的 .ics 文件导入你的日历应用

img3 img4 img5 img6

导入日历应用

Outlook(推荐)

  1. 打开 Outlook Calendar
  2. 进入日历模块
  3. 添加日历 → 创建空白日历
  4. 转到“从文件上传”
  5. 选择下载的 .ics 文件

Google Calendar

  1. 打开 Google Calendar
  2. 左侧【其他日历】点击 “+” → “导入”
  3. 选择下载的 .ics 文件
  4. 选择要导入的日历,时区选择上海

Apple Calendar (macOS/iOS)

注意:网页端不支持

  1. 双击 .ics 文件
  2. 或在 Calendar 应用中:文件 → 导入

其他日历应用

大多数日历应用都支持标准的 iCalendar (.ics) 格式导入。

加载到iPhone

  1. 设置 → Apps → Mail → Mail Accounts → Add Account(intl邮箱需要使用Microsoft Exchange)
  2. 在 Calendar 应用底部 “Calendars” 选择刚才创建的日历(默认直接加载)
  3. 可以选择 Event Alert

高级配置

修改时区

在脚本中找到这行并修改:

1
2
3
const TZID = "Asia/Shanghai"; // 修改为你需要的时区

修改匹配规则

脚本会自动匹配包含以下模式的网址:

1
2
3
4
5
// @match        https://scrsprd.zju.edu.cn/psc/CSPRD/EMPLOYEE/HRMS/*

// @match        file:///*

如果需要支持其他 PeopleSoft 系统,可以添加相应的 @match 规则。

支持的数据格式

时间格式

  • 星期一 8:00AM - 9:50AM
  • 周二 08:00 - 09:35
  • 一三五 13:00-14:35
  • MoWe 10:00AM - 11:15AM

日期格式

  • 16/09/2024 - 17/01/2025 (DD/MM/YYYY)
  • 09/16/2024 - 01/17/2025 (MM/DD/YYYY)
  • 2024-09-16 - 2025-01-17 (YYYY-MM-DD)

表格结构

脚本会寻找包含这些列标题的表格:

  • 日期和时间 / Days & Times
  • 教室 / Room
  • 讲师 / Instructor / 教师
  • 开始/结束日期 / Start/End Date
This post is licensed under CC BY 4.0 by the author.