UpWork API无法正确识别实体与time模块Api属性错误求助
Upwork API调用报错解决方案
1. 修复AttributeError: module 'upwork.routers.reports.time' has no attribute 'Api'报错
- 该报错由SDK版本与官方文档版本不匹配导致:
- v1.x版本Upwork Python SDK的
upwork.routers.reports.time模块下仅提供Gds类,不存在Api类 - 官方文档提及的
time.Api(client)仅适用于v2.x及以上版本SDK
- v1.x版本Upwork Python SDK的
- 修复方案二选一:
- 方案1:将Upwork Python SDK升级到最新正式版,即可使用
time.Api(client)调用 - 方案2:保持当前SDK版本不变,继续使用
time.Gds(client)进行时间报告接口调用即可
- 方案1:将Upwork Python SDK升级到最新正式版,即可使用
2. 修复Not Found: No entity found for parameters : COMPANY_ID报错
- 该报错的核心原因是传入的
company_id参数格式不符合time.Gds接口要求:companies.Api(client).get_specific()接口同时支持公司数字ID、公司别名/名称作为入参,所以你传入错误格式的ID也能正常返回团队信息time.Gds.get_by_team_full()仅支持数字格式的公司ID作为入参,你之前从公司列表接口拿到的大概率是公司别名/名称字段,不是数字ID字段
- 修复步骤:
- 调用
companies.Api(client).get_list()后,从返回结果中取id字段的值作为company_id入参(不要取name、reference等字符串类型字段) - 从
companies.Api(client).get_specific(数字公司ID)返回的团队列表中,取团队的id字段值作为team_id入参
- 调用
调用示例代码
# 1. 获取正确的数字格式公司ID company_list = companies.Api(client).get_list() # 可打印返回字段确认id字段位置 # print(company_list[0].keys()) valid_company_id = company_list[0]['id'] # 2. 获取正确的数字格式团队ID company_detail = companies.Api(client).get_specific(valid_company_id) valid_team_id = company_detail['teams'][0]['id'] # 3. 正常调用时间报告接口 result = time.Gds(client).get_by_team_full(valid_company_id, valid_team_id, params)
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

