用Python将票据视图导出到CSV文件
本教程向您展示如何编写Python脚本以在票务视图中获取票务数据,然后将数据导出并格式化为CSV文件。有关视图的详细信息,请参见创建视图来管理票据工作流.
您不必使用API将票证视图导出到CSV文件。您可以在Zendesk管理界面中使用导出视图功能。亚博看到将视图导出到CSV文件.每个选择都有其优点和缺点。例如,Zendesk中的导出数据特性只包含CSV中有限的一组列:票据ID、状态、亚博主题、请求者、请求日期、类型和优先级。API导出所有票证数据,包括对话。不幸的是,数据不是一个整洁的二维结构,不容易写入CSV。你需要munge使数据适合CSV表的简单列和行。绿豆是将数据从一种格式转换或映射到另一种格式的过程。
在开始之前,您需要进行安装Python 3和请求库,它简化了在Python中进行HTTP请求。
相关信息:
关于代码示例的说明:由于文章的页面宽度,示例中的某些代码行可能会换行到下一行。复制本教程中的示例时,请忽略换行。在Python中换行很重要。
获取视图ID
在本例中,您希望检索列表下列出的票据数据票的观点命名为“功能请求”。
对象的API请求,从而找到票据视图的视图id列表视图端点。您可以使用API测试工具,如curl或邮递员提出请求。
示例curl请求:
旋度https://{子域名}.亚博.com/api/v2/的观点.json \
-v-u{电子邮件}:{密码}
在响应中,视图对象数组包含标题
命名为“功能请求”和视图id
.例子:
{
“数”:2,
“next_page”:零,
“previous_page”:零,
“视图”:[
{
“活跃”:真正的,
“条件”:{},
“描述”:“近期门票查看”,
“执行”:{},
“id”:25,
“位置”:3.,
“限制”:{},
“标题”:“机票更新时间少于12小时”
},
{
“活跃”:假,
“条件”:{},
“描述”:“查看有关功能请求的门票”,
“执行”:{},
“id”:23,
“位置”:7,
“限制”:{},
“标题”:“特性请求”
}
]
}
从API获取票据数据
方法获取了视图ID之后,可以检索门票列表从视图中列出门票端点。
在您最喜欢的文本编辑器中,创建一个名为export_tickets.py并粘贴以下代码:
进口请求
身份验证=“your_email”,“your_password”
view_tickets=[]
view_id=your_view_id
打印(f'从视图ID {view_id}获取门票')
url=f“https://your_subdomain.亚博zendesk.com/api/v2/views/ {view_id} / tickets.json”
而url:
响应=请求.得到(url,身份验证=身份验证)
page_data=响应.json()
票=page_data[“门票”]
view_tickets.扩展(票)
url=page_data[“next_page”]
将脚本中以下占位符替换为您的信息:your_subdomain,your_email_address,your_password,your_view_id.
脚本中:
- 您导入Requests模块来进行API调用
- 的
print ()
函数在执行脚本时,将消息打印到屏幕上,表明它正在从视图中检索票据 - 的从视图中列出门票指定端点URL
- 要对所有结果进行分页,使用while循环发出API请求,并将页面数据增量存储在tickets变量中,然后获取'next_page' url。你可以在使用Zendesk API和Python获取大型数据集亚博.
选择并格式化数据
数据包括许多您不需要的信息,例如自定义字段。对于每个记录,您只需要为每个票据包含以下属性:id
,主题
,requester_id
,assignee_id
,created_at
,状态
.
您可以使用CSV库来选择您想要包含在CSV文件中的票据属性并格式化它。
在export_tickets.py,将以下代码粘贴到文件末尾:
行=[(“票ID”,“主题”,“请求者ID”,
“受让人ID”,“创建”,“状态”,“URL”)]
为票在view_tickets:
行=(
票[“id”],
票[“主题”],
票[“requester_id”],
票[“assignee_id”],
票[“created_at”],
票[“状态”],
f“https://support.亚博zendesk.com/agent/tickets/{票(" id ")}’
)
行.附加(行)
与开放(“tickets.csv”,模式=' w ',换行符=”)作为csv_file:
report_writer=csv.作家(csv_file,方言=“超越”)
为行在行:
report_writer.writerow(行)
保存文件并运行脚本。
第一行代码为您想要包含的票据属性创建标题行。接下来,一个为
loop用于遍历每个ticket的ticket属性,以及创建一个ticket URL。
with语句打开tickets.csv和csv.writer ()
函数用于创建report_writer
对象。的为
循环使用report_writer.writerow ()
函数将每张门票的门票属性编写为tickets.csv文件。
代码完成
你的脚本应该是这样的:
进口请求
进口csv
#设置
身份验证=“your_email”,“your_password”
view_tickets=[]
view_id=your_view_id
#列表票从一个视图
打印(f'从视图ID {view_id}获取门票')
url=f“https://your_domain.亚博zendesk.com/api/v2/views/ {view_id} / tickets.json”
而url:
响应=请求.得到(url,身份验证=身份验证)
page_data=响应.json()
票=page_data[“门票”]#提取“门票”列表从页面
view_tickets.扩展(票)
url=page_data[“next_page”]
#初始化行与初始标题行
行=[(“票ID”,“主题”,“请求者ID”,
“受让人ID”,“创建”,“状态”,“URL”)]
#定义每一张票一行,并附加
为票在view_tickets:
行=(
票[“id”],
票[“主题”],
票[“requester_id”],
票[“assignee_id”],
票[“created_at”],
票[“状态”],
f“https://support.亚博zendesk.com/agent/tickets/{票(" id ")}’
)
行.附加(行)
与开放(“tickets.csv”,模式=' w ',换行符=”)作为csv_file:
report_writer=csv.作家(csv_file,方言=“超越”)
为行在行:
report_writer.writerow(行)