本例结合钉钉开放平台相关api实现获取宜搭表单数据。可在faas中做实现。
本例采用python编写,已在本地实现。对于免登获取数据,数据归档到本地能提供参考。
faas具体实现请根据实际,参考使用。
采用alibabacloud-dingtalk最新安装包 ,pip 安装。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
from typing import List
from alibabacloud_dingtalk.yida_1_0.client import Client as dingtalkyida_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.yida_1_0 import models as dingtalkyida__1__0_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_dingtalk.oauth2_1_0.client import Client as dingtalkoauth2_1_0Client
from alibabacloud_dingtalk.oauth2_1_0 import models as dingtalkoauth_2__1__0_models
class Sample:
def __init__(self):
pass
# 创建宜搭客户端
@staticmethod
def create_client() -> dingtalkyida_1_0Client:
"""
使用 Token 初始化账号Client
@return: Client
@throws Exception
"""
config = open_api_models.Config()
config.protocol = 'https'
config.region_id = 'central'
return dingtalkyida_1_0Client(config)
# 创建应用Oauth2的客户端
@staticmethod
def create_Oauth2Client() -> dingtalkoauth2_1_0Client:
"""
使用 Token 初始化账号Client
@return: Client
@throws Exception
"""
config = open_api_models.Config()
config.protocol = 'https'
config.region_id = 'central'
return dingtalkoauth2_1_0Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
clientOauth2 = Sample.create_Oauth2Client()
# 获取Oauth2的token,相当于登陆者的信息,通过钉钉开发平台创建应用的ak,as获取token
# 该token的实效是7200s
get_access_token_request = dingtalkoauth_2__1__0_models.GetAccessTokenRequest(
app_key='开发者平台应用的ak',
app_secret='开发者平台应用的as'
)
try:
rtn = clientOauth2.get_access_token(get_access_token_request)
print(rtn.body.access_token)
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err 中含有 code 和 message 属性,可帮助开发定位问题
print('2:', err)
pass
client = Sample.create_client()
# 通过宜搭的客户端,调用宜搭模块的api函数
search_form_datas_headers = dingtalkyida__1__0_models.SearchFormDatasHeaders()
# 输入上面获取到应用token,该应用要开通宜搭相关权限才行。
search_form_datas_headers.x_acs_dingtalk_access_token = rtn.body.access_token
# 配置api相关参数
search_form_datas_request = dingtalkyida__1__0_models.SearchFormDatasRequest(
# 宜搭的应用参数
app_type='宜搭应用,应用编码',
system_token='宜搭应用,应用密钥',
user_id='用户id',
language='zh_CN',
form_uuid='表单id',
# search_field_json='{"textField_jcr0069m":"danhang","textareaField_jcr0069n":"duohang","numberField_jcr0069o":["1","10"],"radioField_jcr0069p":"选项一","selectField_jcr0069q":"选项一","checkboxField_jcr0069r":["选项二"],"multiSelectField_jcr0069s":["选项二","选项三"],"dateField_jcr0069t":[1514736000000,1517414399000],"cascadeDate_jcr0069u":[[1514736000000,1517414399000],[1514736000000,1517414399000]],"employeeField_jcr0069x":["xxxxx"],"citySelectField_jcr0069y":["110000","110100","110101"],"departmentField_jcr0069z":1123456,"cascadeSelectField_jcr006a0":["part","part_b"],"tableField_jcr006a1":"明细数据"}',
current_page=1,
page_size=10,
# originator_id='1731111122223332',
create_from_time_gmt='2022-07-01',
create_to_time_gmt='2022-08-01',
modified_from_time_gmt='2022-07-01',
modified_to_time_gmt='2022-08-01'
# dynamic_order='{"numberField_1ac":"+"}, 表示按照字段numberField_1ac升序排列'
)
try:
rtn = client.search_form_datas_with_options(search_form_datas_request, search_form_datas_headers,
util_models.RuntimeOptions())
print(rtn.body)
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err 中含有 code 和 message 属性,可帮助开发定位问题
print(err)
pass
if __name__ == '__main__':
Sample.main(sys.argv[1:])