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

}

相关推荐
Mintopia18 小时前
Vue3 项目如何迁移到 uni-app x:从纯 Web 到多端应用的系统指南
uni-app
Mintopia18 小时前
uni-app x 发展前景技术分析:跨端统一的新阶段?
uni-app
不爱说话郭德纲2 天前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
HashTang3 天前
【AI 编程实战】第 12 篇:从 0 到 1 的回顾 - 项目总结与 AI 协作心得
前端·uni-app·ai编程
JunjunZ3 天前
uniapp 文件预览:从文件流到多格式预览的完整实现
前端·uni-app
玩泥巴的3 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
TT_Close4 天前
“啪啪啪”三下键盘,极速拉起你的 uni-app 项目!
vue.js·uni-app·前端工程化
特立独行的猫a4 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS影视票房榜组件完整实现过程
华为·uni-app·harmonyos·轮播图·uniapp-x
吴声子夜歌4 天前
小程序——布局示例
小程序