我最近开始使用 pysnow-module 来自动化我在 Servicedesk 的工作。我的问题是我不知道如何创建请求的项目。
我已成功创建新事件和新请求,并更新它们。我也成功修改了请求的项目,但我不知道如何将请求变成请求的项目。
我尝试过以下代码片段,全部从这里开始
s = pysnow.Client(instance='Secret domain', user='Secret-user', password='Secret')
然后继续以下尝试:
def new_ritm():
result = s.insert(table='sc_req_item', payload={'field1': 'value1',
'field2': 'value2'})
print(result['number'])
luo_uusi_ritm()
File "XXXXXXXXXXXXXXXXXX", line 51, in <module>luo_uusi_ritm()
File"XXXXXXXXXXXXXXXXXX", line 47, in new_ritmresult = s.insert(table='sc_req_item', payload={'field1': 'value1', 'field2': 'value2'})
File "XXXXXXXXXXXXXXXXXX", line 90, in insert return r.insert(payload)
File "XXXXXXXXXXXXXXXXXX", line 108, in insert return self._get_content(response)
File "XXXXXXXXXXXXXXXXXX", line 290, in _get_contentreturn content_json['result']
KeyError: 'result'
还尝试修改 REQ,插入新值:
result = s.insert(table='sc_req_item', payload={'sc_req_item.request':
'REQ0994143'})
但是出现错误:
"File "xxxxxxxxxxxxx, line 290, in _get_content
return content_json['result']
KeyError: 'result'
编辑: 建议一: 我无法添加
“request_params={'sysparm_display_value':'true'})” ,因为它给了我一个“意外的参数”错误
我输入了以下代码:
s = pysnow.Client(instance=XXXX,user=XXXXX,password=XXXXXX)
try:
result = s.insert(table='sc_req_item', payload={'field1': 'value1',
'field2': 'value2'})
except pysnow.UnexpectedResponse as e:
print("%s, details: %s" % (e.error_summary, e.error_details))
这给了我一个错误:
回溯(最近一次调用最后一次):
文件“XXXXXXXXXXXX”,第 63 行,在 stack_experiment() 中
文件“XXXXXXXXX”,第 59 行,在 stack_experiment result = s.insert(table='sc_req_item', payload={'field1': 'value1','field2': 'value2'})
文件“XXXXXXXXXXXXX”,第 90 行,在插入中返回 r.insert(payload)
文件“XXXXXXXXXXXXX”,第108行,在插入中返回self._get_content(响应)
文件“XXXXXXXXXXX”,第290行,在_get_content中返回content_json['result']
KeyError:“结果”
建议2:
也许您对使用 Client.insert 而不是 Request.insert 感到困惑
我对此感到困惑。我应该更改起始代码“s = pysnow.Client(etc.”吗?
我又去读了一遍文档,我已经理解了新的请求,我应该使用 pysnow.Request,所以我再次尝试了:
r = pysnow.Request(instance='Secret domain', user='Secret-user',
password='Secret', method='POST', table='sc_req_item')
try:
result = r.insert(payload={'field1': 'value1', 'field2': 'value2'})
except pysnow.UnexpectedResponse as e:
print("%s, details: %s" % (e.error_summary, e.error_details))
我收到一个错误:
Traceback (most recent call last):
File "xxxx", line
7, in <module>
r = pysnow.Request(instance='xxxx', user='xxxx',
password='xxxxx', method='POST', table='sc_req_item')
File "xxxxx", line 29, in __init__
self.default_payload = kwargs.pop('default_payload')
KeyError: 'default_payload'
评论:我的问题是请求的项目。
尝试以下操作,然后[编辑]您的问题以添加
print(...
或任何 Traceback
的输出:
try:
result = s.insert(table='sc_req_item',
payload={'field1': 'value1', 'field2': 'value2'})
except pysnow.UnexpectedResponse as e:
print("%s, details: %s" % (e.error_summary, e.error_details))
也许您对使用
Client.insert
而不是 Request.insert
感到困惑?
pysnow.Request — 创建一个新的请求对象
插入(有效负载)插入一条新记录,并将有效负载作为参数传递
参数:payload – 要创建的记录(dict)
返回:已创建记录
设置请求参数
request_params 字典参数可用于设置请求参数。此示例从具有链接表的字段返回名称,而不是 ServiceNow 点遍历的标准 URL。
import pysnow
# Create new client with SN request parameters
sn = pysnow.Client(instance=instance,
user=username,
password=password,
request_params={'sysparm_display_value': 'true'})
尝试文档中的这个示例:
pysnow:获取单个记录
有关更多详细信息,请参阅 pysnow.Request.get_one() 文档。
import pysnow # Create client object s = pysnow.Client(instance='myinstance', user='myusername', password='mypassword') # Query for 'INC01234' on table 'incident' r = s.query(table='incident', query={'number': 'INC01234'}) # Fetch one record and filter out everything but 'number' and 'sys_id' res = r.get_one(fields=['number', 'sys_id']) # Print out the result print(res)