钉钉服务端API下载审批附件接口如何更改下载链接的文件格式?
在钉钉中,审批流程是企业日常办公中常见的功能之一,当审批流程完成后,通常会有相关的附件需要下载,钉钉提供了服务端API来下载审批附件,但默认情况下,下载链接的文件格式是固定的,本文将详细介绍如何使用钉钉服务端API更改下载链接的文件格式。
1. 钉钉服务端API概述
钉钉服务端API是钉钉提供的一套用于开发和集成的接口,可以与企业内部系统进行对接,实现自动化办公、审批等功能,通过调用这些API,开发者可以实现自定义的业务逻辑和功能。
2. 下载审批附件接口介绍
钉钉提供了下载审批附件的接口,可以通过该接口获取到附件的下载链接,默认情况下,下载链接的文件格式是固定的,通常是以.xlsx
或.docx
等常见文件格式存储的。
3. 更改下载链接的文件格式
要更改下载链接的文件格式,可以通过以下步骤进行操作:
3.1 获取审批附件信息
需要使用钉钉服务端API中的相关接口获取到审批附件的信息,可以使用/oapi/processinstance/getattachmenturl
接口来获取附件的下载链接,该接口需要传入以下参数:
processInstanceId
: 审批流程实例ID。
attachmentId
: 附件ID。
调用该接口后,会返回一个JSON对象,其中包含了附件的下载链接。
3.2 更改文件格式
在获取到附件的下载链接后,可以使用其他工具或方法来更改文件格式,如果原始文件是.xlsx
格式的Excel文件,可以使用Excel软件将其另存为.csv
或其他所需的文件格式。
3.3 生成新的下载链接
更改文件格式后,需要生成一个新的下载链接,以便用户能够下载到新格式的文件,可以使用钉钉服务端API中的/oapi/processinstance/createattachment
接口来创建新的附件,并指定新的文件格式和内容,该接口需要传入以下参数:
processInstanceId
: 审批流程实例ID。
attachmentName
: 附件名称。
attachmentType
: 附件类型(文档、图片等)。
content
: 附件的内容,可以是二进制数据或Base64编码的字符串。
调用该接口后,会返回一个JSON对象,其中包含了新附件的下载链接,可以将该链接提供给用户,以便他们下载新格式的文件。
4. 示例代码
下面是一个示例代码片段,演示如何使用钉钉服务端API下载审批附件并更改文件格式:
import requests import base64 import pandas as pd from io import StringIO from datetime import datetime import json 钉钉应用的AppKey和AppSecret app_key = 'your_app_key' app_secret = 'your_app_secret' token = 'your_access_token' timestamp = int(datetime.now().timestamp()) sign_str = f'{timestamp}{app_secret}'.encode('utf8') + b'your_app_key' + b'your_access_token' + b'your_app_secret' sign = base64.b64encode(sign_str).decode('utf8') headers = { 'ContentType': 'application/json', 'Authorization': f'Bearer {token}', 'XTimestamp': str(timestamp), 'XSign': sign, } 获取审批附件信息 def get_attachment_info(processInstanceId, attachmentId): url = f'https://oapi.dingtalk.com/topapi/processinstance/getattachmenturl?processInstanceId={processInstanceId}&attachmentId={attachmentId}' response = requests.get(url, headers=headers) data = response.json()['data'] return data['url'], data['type'] 创建新的审批附件并生成下载链接 def create_new_attachment(processInstanceId, attachmentName, attachmentType, content): url = f'https://oapi.dingtalk.com/topapi/processinstance/createattachment?processInstanceId={processInstanceId}&attachmentName={attachmentName}&attachmentType={attachmentType}&content={content}' response = requests.post(url, headers=headers) data = response.json()['data'] return data['url'] 主程序入口 def main(): processInstanceId = 'your_process_instance_id' # 审批流程实例ID attachmentId = 'your_attachment_id' # 附件ID newAttachmentName = 'new_attachment_name' # 新附件名称 newAttachmentType = 'document' # 新附件类型(文档) content = 'your_content' # 附件内容(可以是二进制数据或Base64编码的字符串) # 获取原始附件信息和下载链接 originalUrl, originalType = get_attachment_info(processInstanceId, attachmentId) print(f'原始附件URL:{originalUrl}') print(f'原始附件类型:{originalType}') # 读取原始文件内容并更改文件格式(示例中使用Pandas库将Excel文件转换为CSV文件) if originalType == 'excel': # 如果原始文件是Excel文件,则转换为CSV文件并生成新的下载链接 df = pd.read_excel(StringIO(content)) # 读取Excel文件内容到DataFrame对象中(假设已将原始内容解码为字符串) csvData = df.to_csv(index=False) # 将DataFrame对象转换为CSV字符串形式的内容(不包含索引列) newContent = base64.b64encode(csvData.encode('utf8')).decode('utf8') # 将CSV内容编码为Base64字符串形式的内容(为了传输和存储)
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/465500.html