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

}

相关推荐
千寻技术帮2 小时前
50022_基于微信小程序同城维修系统
java·mysql·微信小程序·小程序·同城维修
说私域6 小时前
“开源AI智能名片链动2+1模式S2B2C商城小程序”在县级市场的应用与挑战分析
人工智能·小程序·开源
anyup6 小时前
支持鸿蒙!开源三个月,uView Pro 开源库近期更新全面大盘点,及未来计划
前端·vue.js·uni-app
千寻技术帮7 小时前
50024_基于微信小程序的食品购商城
小程序·源码·项目·文档·ppt
阿斌_bingyu70910 小时前
uniapp实现android/IOS消息推送
android·ios·uni-app
说私域13 小时前
定制开发AI智能名片S2B2C预约服务小程序的定制开发与优势分析
大数据·人工智能·小程序
茶憶13 小时前
UniApp RenderJS中集成 Leaflet地图,突破APP跨端开发限制
javascript·vue.js·uni-app
云起SAAS1 天前
名字姓名起名打分评分抖音快手微信小程序看广告流量主开源
微信小程序·小程序·ai编程·看广告变现轻·名字姓名起名打分评分
说私域1 天前
从裂变能力竞争到技术水平竞争:开源AI智能名片链动2+1模式S2B2C商城小程序对微商企业竞争格局的重塑
人工智能·小程序·开源
开发加微信:hedian1161 天前
短剧小程序开发全攻略:技术选型与实现思路
微信·小程序·架构·aigc·交互