如何解决使用Python中的特定列字段从ServiceNow中提取更改请求CSV
我现在有
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获取我想要的数据,但是缺少某些字段。我需要“已打开”和“已关闭”列,并且不确定如何使用我的代码进行查询。
任何帮助都是完美的!我真的对使用请求很陌生。
解决方法
乍一看,您的代码看起来正确。我认为您只需要更新用于提供List
参数的Web服务URL。 IE:
sysparm_default_export_fields=all
在那之后,您应该得到一个包含每个字段的响应,包括系统创建的字段,例如sys_id和created_on。另外,您可以在ServiceNow中创建一个新视图,并在URL中提供dev.service-now.com/change_request_list.do?CSV&sysparm_default_export_fields=all
参数。
这是使用Rest Table 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。