【问题标题】:Export Methods for SugarCRM v10 apiSugarCRM v10 api 的导出方法
【发布时间】:2015-03-03 20:12:35
【问题描述】:

我正在尝试调用 SugarCRM v10 api 以获取报告的输出,而无需登录 Web 界面并单击导出按钮。我想将此报告作为可以使用 python 和 requests 库写入 csv 格式的数据。

我可以成功验证并获得一个令牌,但无论我尝试什么,我从报告中得到的所有响应都是错误方法不存在,这意味着您不能在此代码中的第二个 url 末尾使用 /csv块。

url = "https://mydomain.sugarondemand.com/rest/v10/oauth2/token"
payload = {"grant_type":"password","username":"ursername","password":"password","client_id":"sugar", "platform":"myspecialapp"}


r = requests.post(url, data=json.dumps(payload))

response = json.loads(r.text)

token = response[u'access_token']    
print 'Success! OAuth token is ' + token

#What export methods are available? ###################################

#WRONG url = "https://mydomain.sugarondemand.com/rest/v10/Reports/report_id/csv"
#Following paquino's suggestion I used Base64

url = "https://mydomain.sugarondemand.com/rest/v10/Reports/report_id/Base64"
headers = { "Content-Type" : "application/json", "OAuth-Token": token }

r = requests.get(url, headers=headers);

response = r.text.decode('base64')

print response`

我的问题是:通过对 SugarCRM api v10 的 api 调用可以使用哪些导出方法。

编辑:在请求 url 中使用 Base64 不幸返回我不知道如何解析的 ab 对象...

%PDF-1.7
3 0 obj
<</Type /Page
/Parent 1 0 R
/MediaBox [0 0 792.00 612.00]
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Length 37217>>
stream
8.cܬR≈`ä║dàQöWºáW╙µ

【问题讨论】:

  • paquino 的回复很有帮助...
  • 是否有与 Sugarcrm v10 rest api 交互的 Python 库?

标签: python api sugarcrm


【解决方案1】:

Reports Api 接受“Base64”和“Pdf”

【讨论】:

  • 好吧,我假设 Base64 可以产生可以写入 csv 的输出,但不幸的是没有成功。输出结果是... %PDF-1.7 3 0 obj > endobj 4 0 obj > 流
  • @pythagorean 是的,Base64 导出类型实际上只是 PDF 文件,作为用 Base64 编码的字符串。您从 SugarCRM 获取此数据的其他选择是扩展 Reports API 以接受 CSV 导出。或者通过模块API拉取相关数据。
  • 谢谢,是的,我现在明白了。我希望“报告”只会给我报告中的数据,但实际上它不会给你那个对象......“报告”作为 pdf 文件。不是超级有用,但查看文档我发现他们已经解释了如何扩展 Reports API。
  • @user1376214 我想检查您是否能够成功导出报告?我有一个类似的问题 60702485,想知道你是否解决了它。谢谢!
【解决方案2】:

SugarCRM REST API v10 的 Python 包装器

https://github.com/Feverup/pysugarcrm

快速入门

pip install pysugarcrm

from pysugarcrm import SugarCRM
api = SugarCRM('https://yourdomain.sugaropencloud.e', 'youruser', 'yourpassword')

# Return info about current user
api.me

# A more complex query requesting employees
api.get('/Employees', query_params={'max_num': 2, 'offset': 2, 'fields': 'user_name,email'})

{'next_offset': 4,
 'records': [{'_acl': {'fields': {}},
   '_module': 'Employees',
   'date_modified': '2015-09-09T13:40:32+02:00',
   'email': [{'email_address': 'John.doe@domain.com',
     'invalid_email': False,
     'opt_out': False,
     'primary_address': True,
     'reply_to_address': False}],
   'id': '12364218-7d79-80e0-4f6d-35ed99a8419d',
   'user_name': 'john.doe'},
  {'_acl': {'fields': {}},
   '_module': 'Employees',
   'date_modified': '2015-09-09T13:39:54+02:00',
   'email': [{'email_address': 'alice@domain.com',
     'invalid_email': False,
     'opt_out': False,
     'primary_address': True,
     'reply_to_address': False}],
   'id': 'a0e117c0-9e46-aebf-f71a-55ed9a2b4731',
   'user_name': 'alice'}]}

# Generate a Lead
api.post('/Leads', json={'first_name': 'John', 'last_name': 'Smith', 'business_name_c': 'Test John', 'contact_email_c': 'john@smith.com'})

from pysugarcrm import sugar_api

with sugar_api('http://testserver.com/', "admin", "12345") as api:
    data = api.get('/Employees', query_params={'max_num': 2, 'offset': 2, 'fields': 'user_name,email'})
    api.post('/Leads', json={'first_name': 'John', 'last_name': 'Smith', 'business_name_c': 'Test John', 'contact_email_c': 'john@smith.com'})

# Once we exit the context manager the sugar connection is closed and the user is logged out

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多