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 (res[1].statusCode === 200 && res[1].data.code === 0) {

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

return {

success: true,

data: res[1].data

}

} else {

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

return {

success: false,

error: res[1].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 = formdata[0].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);

}

相关推荐
晨枫阳3 小时前
uniapp兼容问题处理总结
前端·vue.js·uni-app
iOS阿玮4 小时前
苹果 Swift 安卓SDK上线,用一套 Swift 代码开发安卓 App 成为可能!
uni-app·app·apple
2501_915921435 小时前
iOS混淆与IPA加固全流程(iOS混淆 IPA加固 Ipa Guard实战)
android·ios·小程序·https·uni-app·iphone·webview
liusheng5 小时前
腾讯地图 SDK 接入到 uniapp 的多端解决方案
前端·uni-app
游戏开发爱好者85 小时前
iOS 26 App 开发阶段性能优化 从多工具协作到数据驱动的实战体系
android·ios·小程序·uni-app·iphone·webview·1024程序员节
2501_915106325 小时前
深入剖析 iOS 26 系统流畅度,多工具协同监控与性能优化实践
android·ios·性能优化·小程序·uni-app·cocoa·iphone
游戏开发爱好者88 小时前
iOS 26 App 查看电池寿命技巧,多工具组合实践指南
android·macos·ios·小程序·uni-app·cocoa·iphone
xiaohe06018 小时前
🚀 拥抱 create-uni,一行命令轻松集成 Uni ECharts!
vue.js·uni-app·echarts
abigale0310 小时前
开发实战 - ego商城 - 补充:小程序性能优化
小程序·uniapp·小程序分包