我正在尝试从Service Now中提取故障单详细信息。有没有办法在没有ODBC的情况下提取细节?我也尝试过[1]中提到的解决方案:https://community.servicenow.com/docs/DOC-3844,但是我收到错误9 -subscript超出范围。
有没有更好的方法有效地提取细节?我试着在现在的服务论坛上问这个,但我想我可能会从这里得到其他意见。
答案 0 :(得分:0)
问这个问题已经有一段时间了。希望以下仍然有用。
我正在提取更改数据(不是事件),但过程仍应相同。您需要收集事件表和列信息。然后有几种方法可以解决这个问题。
1)如果要提取的数据具有固定参数,例如固定期间或固定列或组等,则可以在servicenow中创建报告,然后使用REST / SOAP API获取text / csv中的数据格式。您可以根据需要使用不同的python模块将csv转换为xls或xlsx。我使用了openpyXL
,csv
,xlsreader
,xlswriter
等。
点击此处查看示例 ServiceNow - How to use SOAP to download reports
2)如果数据具有需要更改列,日期或过滤器等的动态参数,您仍然可以使用soap / REST API,但在python脚本中形成查询而不是静态报告。这样您就可以根据您的需求随时更改它。
以下是DB的示例查询。你可以用上面的例子。只需使用以下内容切换url
。
table_name = 'u_change_table_name' #SN DB holding change/INCIDENT info
table_limit = 800
table_query = 'active=true&sysparm_display_value=true&planned_start_date=today'
date_query = 'chg_start_date>=javascript:gs.daysAgoStart(1)^active=true^chg_type=normal'
table_fields = 'chg_number,chg_start_date,chg_duration,chg_end_date' #Actual column names from DB and not from SN report.
url= (
'https://yourcompany.service-now.com/api/now/table/' +table_name +\
'?sysparm_query=' + date_query + '&sysparm_fields=' \
+ table_fields + '&sysparm_limit=' + str(table_limit)
)