uni-app小程序往飞书多维表格写入内容(包含图片)

1、首先,要去飞书开放平台申请一个应用

https://open.feishu.cn/app?lang=zh-CN,

创建完成后,

到权限管理菜单配置这些权限,然后记着appId和appSecret

2、下面是代码部分

// 飞书开放平台相关配置

const FEISHU_CONFIG = {

appId: 'cli_a865d9f7b2661013', //你的飞书应用appId

appSecret: 'xxxxxxxx', //你的飞书应用appSecret

sheetToken: 'OkgmbPc8nagVQFsJL01cfMpbnAb', //你的共享表格token 多维表格url(base后面的):https://jcnl0y81wjmw.feishu.cn/base/OkgmbPc8nagVQFsJL01cfMpbnAb?table=tblkin4uyMdJybzy\&view=vewQwiI2gE

tableId: 'tblkin4uyMdJybzy' //你的表格Id,table=后面的,注意不要包含&view=这些

}

// 获取飞书API访问令牌

const getAccessToken = async () => {

try {

const res = await uni.request({

url: 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/',

method: 'POST',

data: {

app_id: FEISHU_CONFIG.appId,

app_secret: FEISHU_CONFIG.appSecret

},

header: {

'Content-Type': 'application/json'

}

})

console.log('res===',res)

if (res?.data?.msg == 'ok' && res.data.code === 0) {

return res.data.tenant_access_token

} else {

console.error('获取飞书token失败:', res)

throw new Error('获取飞书访问令牌失败')

}

} catch (error) {

console.error('获取飞书token出错:', error)

throw error

}

}

/**

* 向飞书表格追加行数据

* @param {Array} rows 要追加的行数据,每个元素是一个对象,键为列名,值为单元格内容

* @returns {Promise} 返回操作结果

*/

const appendRowsToSheet = async(data) => {

try {

// 获取访问令牌

const accessToken = await getAccessToken();

// 调用飞书API写入数据

const res = await uni.request({

url: `https://open.feishu.cn/open-apis/bitable/v1/apps/${FEISHU_CONFIG.sheetToken}/tables/${FEISHU_CONFIG.tableId}/records\`,

method: 'POST',

header: {

'Content-Type': 'application/json',

'Authorization': `Bearer ${accessToken}`

},

data: {

fields: data

}

});

if (res1.statusCode === 200 && res1.data.code === 0) {

console.log('向飞书表格追加数据成功:')

return {

success: true,

data: res1.data

}

} else {

console.error('向飞书表格追加数据失败:', res1.data)

return {

success: false,

error: res1.data

}

}

} catch (error) {

console.error('向飞书表格追加数据出错:', error)

return {

success: false,

error: error.message

}

}

}

// 上传图片到飞书,返回图片链接

const uploadImageToFeishu = async(filePath,size)=> {

try {

const token = await getAccessToken();

// 先上传文件到飞书

const uploadResponse = await uni.uploadFile({

url: `https://open.feishu.cn/open-apis/drive/v1/medias/upload_all\`,

filePath: filePath,

name: "file",

header: {

'Authorization': `Bearer ${token}`,

'Content-Type': 'multipart/form-data'

},

formData: {

'file_name': `image_${Date.now()}.jpg`,

parent_type: "bitable_image", // 固定值:上传到云空间

parent_node: FEISHU_CONFIG.sheetToken, // 父目录ID:root=根目录,可替换为自定义文件夹ID

'size':size

}

})

const result = JSON.parse(uploadResponse.data)

if (result.code === 0) {

return result.data.file_token

} else {

throw new Error('图片上传失败: ' + result.msg)

}

} catch (error) {

console.error('上传图片错误:', error)

throw error

}

}

export {appendRowsToSheet,uploadImageToFeishu}

页面引用代码

import {appendRowsToSheet,uploadImageToFeishu} from '@/utils/feishuSheet.ts';

const uploadImageFile = ()=>{

return new Promise((resolve)=>{

uni.chooseImage({

count: 1, // 选择一张图片 不设置可以选多张

sizeType: "original", "compressed", // 可以选择原图或压缩图

async success(res) {

const formdata = res.tempFiles;

let path = formdata0.path;

uni.getFileInfo({

filePath: path,

success:async (res) => {

// 存储文件大小(字节)

const url = await uploadImageToFeishu(path,res.size);

console.log('url===',url);

resolve(url);

},

});

}

});

})

}

const finishMainence = async()=>{

const imageUrl:any = await uploadImageFile();

fields = {

'设备ID':'1111', //对应多维表格里面文本字段

'客户名称':'张三',

'新设备图片':[ //对应多维表格里面 附件字段

{

file_token: imageUrl,

// 可选:设置图片显示名称

name: `image_${Date.now()}`

}

],

}

const res = await appendRowsToSheet(fields);

}

相关推荐
00后程序员张16 小时前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
特创数字科技1 天前
【uni-app x】告别系统相机限制!三端通用自定义相机组件:任意布局、静默拍照、录像、水印叠加、连拍回图一次搞定
前端·数码相机·uni-app
Martin -Tang1 天前
uniapp app嵌套webview 弹窗方式
android·ios·uni-app
paopaokaka_luck1 天前
个人综合管理小程序(echarts数据看板、健康数据记录与趋势查看、目标拆解和进度管理、日程待办与番茄钟、习惯打卡、收支统计、个人生活记录、跨模块智能提醒)
前端·javascript·spring·小程序·数据分析·echarts·生活
m0_587383001 天前
广州24小时自助健身房解决方案实战指南与系统部署要点
java·spring·小程序·架构·需求分析
郑州光合科技余经理1 天前
同城电商系统:库存变更怎么同步到订单
java·开发语言·前端·后端·uni-app·php·ai编程
m0_587383002 天前
西安同城拼车软件开发实战指南:从零搭建高效系统
人工智能·小程序·数据挖掘·系统架构·需求分析
weixin_lynhgworld2 天前
抽取类盲盒小程序的五条合规红线意味着什么?
小程序
现任明教教主~2 天前
运营级多门店洗车贴膜汽车在线核销保养服务系统洗车预约洗车系统消费分佣扫码核销系统
微信小程序·小程序·汽车
小小王app小程序开发2 天前
盲盒微信小程序开发实战:架构、核心难点与实现方案
小程序