[英]Pulling Change Request CSV from ServiceNow with specific columns (Fields) in Python
目前我有
import requests
import json
import csv
# Set the request parameters
url= 'dev.service-now.com/change_request_list.do?CSV&'
user = 'myuser'
pwd = 'mypass'
# Set proper headers (Unsure if this is needed)
headers = {"Accept":"application/json"}
# Do the HTTP request
response = requests.get(url, auth=(user, pwd), headers=headers )
response.raise_for_status()
with open('out.csv', 'w') as f:
writer = csv.writer(f)
for line in response.iter_lines():
writer.writerow(line.decode('utf-8').split(','))
这会从 ServiceNow 获取我想要的数据,但是它缺少某些字段。 我需要“打开”和“关闭”列,但不确定如何使用我拥有的代码进行查询。
任何帮助都是完美的。 我对使用请求真的很陌生。
这是使用 Rest 表 API 的解决方案,它允许您控制要提取的字段。 我还添加了一个sysparm_query
来限制行。
import requests
import json
import csv
from urllib.parse import urlencode
url = 'https://dev.service-now.com/api/now/table/change_request'
user = 'myuser'
pwd = 'mypass'
fields = ['number', 'short_description', 'opened_at', 'closed_at']
params = {
'sysparm_display_value': 'true',
'sysparm_exclude_reference_link': 'true',
'sysparm_limit': '5000',
'sysparm_fields': ','.join(fields),
'sysparm_query': 'sys_created_on>2020-09-15'
}
headers = {"Accept":"application/json"}
response = requests.get(url + '?' + urlencode(params),
auth=(user, pwd), headers=headers)
response.raise_for_status()
rows = response.json()['result']
with open('out.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(fields)
for row in rows:
outputrow = []
for field in fields:
outputrow.append(row[field])
writer.writerow(outputrow)
乍一看,您的代码看起来是正确的。 我认为您只需要更新您用于提供sysparm_default_export_fields=all
参数的 web 服务 URL 即可。 即: dev.service-now.com/change_request_list.do?CSV&sysparm_default_export_fields=all
之后,您应该会收到包含每个字段的响应,包括系统创建的字段,如 sys_id 和 created_on。 或者,您可以在 ServiceNow 中创建一个新视图,并在 URL 中提供sysparm_view=viewName
参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.