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);

}

相关推荐
局外人LZ1 天前
Uniapp脚手架项目搭建,uniapp+vue3+uView pro+vite+pinia+sass
前端·uni-app·sass
垂钓的小鱼11 天前
保姆级最新OpenClaw(原 Clawdbot/Moltbot)安装指南,建立隧道,外网浏览器也能访问,并接入飞书,让AI在聊天软件里帮你干活
人工智能·飞书
阿正的梦工坊1 天前
使用即梦(seedream)来图生图:读取与写入飞书多维表格
数据库·飞书
光影少年1 天前
AIGC + Taro / 小程序
小程序·aigc·taro
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
前端呆头鹅1 天前
Websocket使用方案详解(uniapp版)
websocket·网络协议·uni-app
浮桥1 天前
uniapp+h5 公众号实现分享海报绘制
uni-app·notepad++
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
天空属于哈夫克31 天前
Go 语言实战:构建一个企微外部群“技术贴收藏夹”小程序后端
小程序·golang·企业微信
wangjun51591 天前
uniapp uni.downloadFile 偶发性下载文件失败 无响应
uni-app