3.3 KiB
3.3 KiB
SAP C4C 附件批量下载工具
从 SAP C4C 下载 Ticket 附件并上传到群晖 DSM。
环境要求
- Python >= 3.8
- Ubuntu 20.04+ 或 macOS
安装
pip install -r requirements.txt
python -m playwright install chromium
# Ubuntu 需额外执行(需要 sudo)
python -m playwright install-deps chromium
文件说明
| 文件 | 说明 |
|---|---|
sap-c4c-AttachmentFolder.py |
核心下载脚本,支持单个 Ticket 下载 |
batch_download.py |
批量下载脚本,从 CSV 读取 ID 并行执行 |
get_ticket_ids.py |
从 CSV 提取 Ticket ID 工具 |
datasource/ |
存放 SAP Analytics 导出的 CSV 文件 |
downloads/ |
本地临时下载目录(上传 DSM 后自动清理) |
error_log.txt |
错误日志,每次批量运行时重置 |
failed_tickets.csv |
失败的 Ticket ID 列表,可用于下次重试 |
单个 Ticket 下载
python sap-c4c-AttachmentFolder.py \
--tenant https://my300375.c4c.saphybriscloud.cn \
--user admin \
--password 'your_password' \
--ticket 20950 \
--output-dir ./downloads
同时上传到群晖 DSM
python sap-c4c-AttachmentFolder.py \
--tenant https://my300375.c4c.saphybriscloud.cn \
--user admin \
--password 'your_password' \
--ticket 20950 \
--output-dir ./downloads \
--dsm-url http://10.0.10.235:5000 \
--dsm-user PLM \
--dsm-password 'dsm_password' \
--dsm-path /Newgonow/AU-SPFJ
仅列出附件不下载
python sap-c4c-AttachmentFolder.py ... --list-only
JSON 输出模式
python sap-c4c-AttachmentFolder.py ... --json
批量下载
将 SAP Analytics 导出的 CSV 文件放入 datasource/ 目录,然后运行:
python batch_download.py
- 读取 datasource 目录下 CSV/xlsx 的第二列,获取所有 Ticket ID
- 最多 5 个任务并行执行
- 每个 Ticket 使用独立子目录
downloads/{ticket_id},避免并行冲突 - 上传 DSM 完成后自动清理本地文件和子目录
- 错误记录到
error_log.txt,失败的 Ticket ID 保存到failed_tickets.csv
守护进程
#启动后台下载
nohup python3 batch_download.py > run.log 2>&1 &
echo $! > batch.pid
#查看实时进度
tail -f run.log
#查看进程是否还在运行
cat batch.pid | xargs ps -p
#结束进程
cat batch.pid | xargs kill
重试失败的 Ticket
将上一次运行生成的 failed_tickets.csv 移动到 datasource/ 目录,然后重新运行:
mv failed_tickets.csv datasource/
python batch_download.py
修改并行数或 Ticket 数量
编辑 batch_download.py 顶部配置:
WORKERS = 5 # 并行数
# get_ticket_ids(10) 中的 10 为读取数量
DSM 目录结构
上传后文件按以下结构组织:
{dsm_path}/
└── {ticket_id}_{serial_id}/
└── {issue_id}_{issue_description}/
└── 附件文件
Quote & Chassis类型的附件会同时复制到所有其他 issue 目录下。
环境变量(可选)
也可通过环境变量代替命令行参数:
| 环境变量 | 对应参数 |
|---|---|
C4C_TENANT |
--tenant |
C4C_USERNAME |
--user |
C4C_PASSWORD |
--password |
DSM_URL |
--dsm-url |
DSM_USERNAME |
--dsm-user |
DSM_PASSWORD |
--dsm-password |
DSM_PATH |
--dsm-path |