原以为会很简单,导出再导入就可以了,后来发现还是自己太年轻了,各种坑。
官方的应用导出导入有诸多限制,带来很多问题
- 附件不能导出还原,100 张表单,30000 多个附件需要处理,用流程节点同步费事实力
- 导出有单表 10000,总数 50000 的限制
- 两个平台账号的邮箱和手机号必须完全一致,否则导入时无法匹配用户,会导致成员字段等失效
为了解决以上限制,以下用 Python 调用 API 实现了
- 一个脚本自动同步所有表单的附件(API 接口的限制,可以同步链接,但是无法更新显示的文件名)
- 一个脚本自动新增所有未导入的表单记录(SASS 平台同步到私有平台,表单内的记录差值大于 50 条的自动同步)
使用步骤:
- 修改 cfg/md.cfg 文件为 API 对应的地址和 APPKey Sign 信息
SASS_HOST = "https://api.mingdao.com/"
PRI_HOST = "https:/example.cn/api/"
URL_APPINFO = "v1/open/app/get"
URL_WORKSHEET_INFO = "v2/open/worksheet/getWorksheetInfo"
SASS_APP_KEY = ""
SASS_SIGN = "=="
PRI_APP_KEY = ""
PRI_SIGN = "=="
2.导出组织的成员的信息, 修改 person.json 姓名和 sass id 和私有 id 的对应关系
3.执行 getallworksheet.py 会自动拉取两个平台的所有表单,并保存到 cfg/all-worksheet.json
4.执行 syncallattch.py 自动同步所有附件控件, 同时 downloadurl 和原始文件名的对应会放到 cfg/urlmap.json 中
5.执行 auotsync.py 自动同步未导入的表单数据