跳到主要内容

lark_oapi

简介

API封装约定:

  • 接口命名参考oapi-sdk-python
  • 接口接受参数params和/或data,对应官方文档中的查询参数请求体

组件接口

lark_oapi.gs

信息

描述链接为飞书开发文档相应内容

函数原型函数作用
map auth_v3_tenant_access_token_internal(map data)自建应用获取 tenant_access_token
map auth_v3_app_access_token_internal(map data)自建应用获取 app_access_token
map authen_v1_oidc_access_token_create(map data, string app_access_token)获取 user_access_token
map contact_v3_user_get(string user_id, map params, string tenant_or_user_access_token)获取单个用户信息
map contact_v3_user_batch_get_id(map params, map data, string tenant_access_token)通过手机号或邮箱获取用户 ID
map group_chat_get(string chat_id, map params, string tenant_or_user_access_token)获取群信息
map group_chat_create(map params, map data, string tenant_access_token)创建群
map group_chat_member_create(string chat_id, map params, map data, string tenant_or_user_access_token)将用户或机器人拉入群聊
map group_chat_delete(string chat_id, string tenant_or_user_access_token)解散群
map group_chat_update(string chat_id, map params, map data, string tenant_or_user_access_token)更新群信息
map im_v1_message_create(map params, map data, string tenant_access_token)发送消息
map im_v1_message_reply(string message_id, map data, string tenant_access_token)回复消息
map im_v1_message_get_resources(string message_id, string file_key, map params, string tenant_access_token)获取消息中的资源文件
map im_v1_message_update(string message_id, map data, string tenant_access_token)编辑消息
map im_v1_message_delete(string message_id, string tenant_or_user_access_token)撤回消息
map im_v1_image_create(map data, string tenant_access_token)上传图片
map im_v1_image_get(string image_key, string tenant_access_token)下载图片
map im_v1_file_create(map data, string tenant_access_token)上传文件
map im_v1_file_get(string file_key, string tenant_access_token)下载文件
map cardkit_card_create(map data, string tenant_access_token))创建卡片实体
map cardkit_card_update(string card_id, map data, string tenant_access_token)更新卡片配置
map cardkit_card_card_update(string card_id, map data, string tenant_access_token)全量更新卡片实体
map cardkit_element_stream(string card_id, string element_id, map data, string tenant_access_token)流式更新文本
map sheets_v3_spreadsheet_create(map data, string tenant_or_user_access_token)创建电子表格
map sheets_v3_spreadsheet_get(string spreadsheet_token, map params, string tenant_or_user_access_token)获取电子表格信息
map sheets_v3_spreadsheet_sheet_get(string spreadsheet_token, string sheet_id, string tenant_or_user_access_token)查询工作表
map sheets_v3_spreadsheet_sheet_query(string spreadsheet_token, string tenant_or_user_access_token)获取工作表
map sheets_v2_spreadsheet_sheet_operate(string spreadsheet_token, map data, string tenant_or_user_access_token)操作工作表
map sheets_v2_spreadsheet_sheet_update_properties(string spreadsheet_token, map params, map data, string tenant_or_user_access_token)更新工作表属性
map sheets_v3_spreadsheet_sheet_move_dimension(string spreadsheet_token, string sheet_id, map data, string tenant_or_user_access_token)移动行列
map sheets_v2_spreadsheet_value_read(string spreadsheet_token, string range, map params, string tenant_or_user_access_token)读取单个范围
map sheets_v2_spreadsheet_value_write(string spreadsheet_token, map data, string tenant_or_user_access_token)向单个范围写入数据
map wiki_v2_space_list(map params, string tenant_or_user_access_token)获取知识空间列表
map wiki_v2_space_get(string space_id, map params, string tenant_or_user_access_token)获取知识空间信息
map wiki_v2_space_get_node(map params, string tenant_or_user_access_token)获取知识空间节点信息
map wiki_v2_space_node_list(string space_id, map params, string tenant_or_user_access_token)获取知识空间子节点列表

样例

public void sample()
{
input_args.value_option("--app_id", "app_id", "应用唯一标识", ValueType.STRING);
input_args.value_option("--app_secret", "app_secret", "应用秘钥", ValueType.STRING);
input_args.value_option("--code", "code", "登录预授权码", ValueType.STRING);
map args = input_args.get_args();

string app_id = args.__app_id;
string app_secret = args.__app_secret;

map result = nil;

// 自建应用获取 tenant_access_token
result = lark_oapi.auth_v3_tenant_access_token_internal({
"app_id": app_id,
"app_secret": app_secret,
});
printf("auth.v3.tenant_access_token.internal: %O\n", result);

string tenant_access_token = result.tenant_access_token;

// 自建应用获取 app_access_token
result = lark_oapi.auth_v3_app_access_token_internal({
"app_id": app_id,
"app_secret": app_secret,
});
printf("auth.v3.app_access_token.internal: %O\n", result);

string app_access_token = result.app_access_token;

// 获取 user_access_token
result = lark_oapi.authen_v1_oidc_access_token_create(
{
"grant_type": "authorization_code",
"code": args.__code,
},
app_access_token
);
printf("authen.v1.oidc_access_token.create: %O\n", result);

string user_access_token = result.data.access_token;

// 获取单个用户信息
result = lark_oapi.contact_v3_user_get(
"53942a5c",
{
"user_id_type": "user_id"
},
tenant_access_token
);
printf("contact.v3.user.get: %O\n", result);

// 通过手机号或邮箱获取用户 ID
result = lark_oapi.contact_v3_user_batch_get_id(
{
"user_id_type": "open_id"
},
{
"emails": ["huangzw2@g-bits.com"]
},
tenant_access_token
);
printf("contact.v3.user.batch_get_id: %O\n", result);

// 获取群信息
result = lark_oapi.group_chat_get(
"oc_0f6426cbfa50347e0072bc87730058d8",
{},
tenant_access_token
);
printf("group.chat.get: %O\n", result);

// 获取工作表
result = lark_oapi.sheets_v3_spreadsheet_sheet_query("FthEsRd7ehFhaOthMk4cd59snCb", user_access_token);
printf("sheets.v3.spreadsheet_sheet.query: %O\n", result);

// 创建表格
result = lark_oapi.sheets_v3_spreadsheet_create(
{
"title": "TEST2",
},
user_access_token);
printf("sheets.v3.spreadsheet.create: %O\n", result);

// 获取知识空间列表
result = lark_oapi.wiki_v2_space_list(
{
"page_size": 25,
},
user_access_token
);
printf("wiki.v2.space.list: %O\n", result);

// 获取知识空间信息
result = lark_oapi.wiki_v2_space_get(
"7356533086685429763",
{
"lang": "zh"
}
user_access_token);
printf("wiki.v2.space.get: %O\n", result);

// 获取知识空间子节点列表
result = lark_oapi.wiki_v2_space_node_list("7356533086685429763", {}, user_access_token);
printf("wiki.v2.space_node.list: %O\n", result);

// 获取知识空间节点信息
result = lark_oapi.wiki_v2_space_get_node(
{
"token": "AX0Fw8bWUiEnvVka2ymclv0snJe"
},
user_access_token);
printf("wiki.v2.space.get_node: %O\n", result);

string spreadsheet_token = result.data.node.obj_token;

// 获取电子表格信息
result = lark_oapi.sheets_v3_spreadsheet_get(spreadsheet_token, {}, user_access_token);
printf("sheets.v3.spreadsheet.get: %O\n", result);

// 操作工作表
result = lark_oapi.sheets_v2_spreadsheet_sheet_operate(
spreadsheet_token,
{
"requests": [
{
"addSheet": {
"properties": {
"title": "New Sheet",
"index": 0
}
}
},
]
},
user_access_token);
printf("sheets.v2.spreadsheet_sheet.operate: %O\n", result);

// 获取工作表
result = lark_oapi.sheets_v3_spreadsheet_sheet_query(spreadsheet_token, user_access_token);
printf("sheets.v2.spreadsheet_sheet.query: %O\n", result);

string sheet_id = nil;
string new_sheet_id = nil;

for (map sheet_info : result.data.sheets)
{
if (sheet_info.title == "Sheet1")
{
sheet_id = sheet_info.sheet_id;
}
else if (sheet_info.title == "New Sheet")
{
new_sheet_id = sheet_info.sheet_id;
}
}

if (sheet_id != nil)
{
// 查询工作表
result = lark_oapi.sheets_v3_spreadsheet_sheet_get(spreadsheet_token, sheet_id, user_access_token);
printf("sheets.v3.spreadsheet_sheet.get: %O\n", result);

// 读取单个范围
result = lark_oapi.sheets_v2_spreadsheet_value_read(
spreadsheet_token,
sprintf("%s!A1:B5", sheet_id),
nil,
user_access_token);
printf("sheets.v2.spreadsheet_value.read: %O\n", result);

array values = result.data.valueRange.values;

if (new_sheet_id != nil)
{
// 向单个范围写入数据
result = lark_oapi.sheets_v2_spreadsheet_value_write(
spreadsheet_token,
{
"valueRange": {
"range": sprintf("%s!A1:B5", new_sheet_id),
"values": values,
}
},
user_access_token);
printf("sheets.v2.spreadsheet_value.write: %O\n", result);
}
}

}