【效率提升教程】飞书自动化上传图片和文字

最近总是需要可视化模型结果,手动复制图片又慢又麻烦~

核心就是上传图片和文字这两个函数,替换这三个地方就可以实现啦~

SHEET_NAME = "" #子表名称

SPREADSHEET_TOKEN = "" #表格名

HEADERS = {

"Authorization": "Bearer u-eSfStf4a1cvWVkcyX03FHl5gjg11gk2XUgG0ggSy8JcL", #替换为自己的key

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

}

复制代码
import os
import json
import base64
import time
import requests

# 飞书表格配置
SHEET_NAME = "" #子表名称
SPREADSHEET_TOKEN = "" #表格名
IMG_URL = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{SPREADSHEET_TOKEN}/values_image"
TEXT_URL = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{SPREADSHEET_TOKEN}/values"
HEADERS = {
    "Authorization": "Bearer u-eSfStf4a1cvWVkcyX03FHl5gjg11gk2XUgG0ggSy8JcL", #替换为自己的key
    "Content-Type": "application/json",
}

def upload_image(image_path, column_index, row_index, max_retries=3):
    for attempt in range(max_retries):
        try:
            with open(image_path, "rb") as f:
                fb = f.read()
                fb = base64.b64encode(fb).decode("utf-8")
                data = {
                    "range": f"{SHEET_NAME}!{chr(65 + column_index)}{row_index}:{chr(65 + column_index)}{row_index}",
                    "image": fb,
                    "name": os.path.basename(image_path),
                }
                rsp = requests.post(IMG_URL, data=json.dumps(data), headers=HEADERS)
                rsp.raise_for_status()
                print(f"✅ 上传图片成功: {image_path} -> 行{row_index}, 列{column_index}")
                return True
        except Exception as e:
            print(f"❌ 上传图片失败: {e}(尝试 {attempt + 1}/{max_retries})")
            time.sleep(2)
    return False

def upload_text(text, column_index, row_index):
    try:
        data = {
            "valueRange": {
                "range": f"{SHEET_NAME}!{chr(65 + column_index)}{row_index}:{chr(65 + column_index)}{row_index}",
                "values": [[text]],
            }
        }
        text_rsp = requests.put(TEXT_URL, data=json.dumps(data), headers=HEADERS)
        text_rsp.raise_for_status()
        print(f"📝 上传文字成功 -> 行{row_index}, 列{column_index}")
        return True
    except Exception as e:
        print(f"❌ 上传文字失败: {e}")
        return False

def process_jsonl(jsonl_path, column_img=0, column_txt=1):
    start_row = 2
    row_index = start_row

    with open(jsonl_path, "r", encoding="utf-8") as f:
        for line in f:
            try:
                data = json.loads(line)
                image_path = data["image"]
                score_text = str(data.get("score", "N/A"))

                if not os.path.exists(image_path):
                    print(f"❌ 缺失图像: {image_path}")
                    continue

                upload_image(image_path, column_img, row_index)
                upload_text(score_text, column_txt, row_index)

                row_index += 1
            except Exception as e:
                print(f"❌ 解析失败: {e}")
                continue

if __name__ == "__main__":
    jsonl_file = "/mnt/data_vlm/jianai/edit_data/image_score.jsonl"  # 你自己的 jsonl 路径
    process_jsonl(jsonl_file, column_img=6*2, column_txt=6*2 + 1)  # 根据表格实际列设置起始列

一、建立表格

要注意这个表格只能在"云盘"下新建,否则不能成功,选别的链接里会带有wiki字样

二、获得表格/子表名

会得到这样一个网址。其中

SHEET_NAME = "I0sjZg"

SPREADSHEET_TOKEN = "Em9csSnhQhOKWMtLssectp1FnHe"

如果没有出现子表名字,说明只有一个子表,再新建一个就好了

三、获取鉴权key

如果是公司账户,需要使用个人号,记得给个人账号分享文档的编辑权限。

在这个网址创建一个应用即可,随便填写,然后点击获取key,这个key大概1-2个小时会过期。

获取工作表 - 服务端 API - 飞书开放平台

相关推荐
测试人社区-千羽9 小时前
智能化测试:AI驱动的测试覆盖率提升方法论与实战路径
运维·人工智能·测试工具·程序人生·自动化·测试覆盖率
合利士智能装备14 小时前
多种拓扑结构的轴向磁通电机,到底该怎么选?
机器人·自动化·汽车·能源·制造
nxlifebao35714 小时前
自媒体整体效率提升怎么做?AI智能媒体助理自动化是关键
运维·自动化·媒体·ai内容创作·自动化工作流·自媒体效率提升·多平台分发
科士威传动15 小时前
滚珠导轨平行度与平面度的精准保障方法
人工智能·科技·平面·机器人·自动化·制造
北京盟通科技官方账号1 天前
精准医疗的未来之一:EtherCAT携手实时解决方案助力医疗器械中的控制与传输
人工智能·机器人·自动化·健康医疗·制造
CICI131414131 天前
自动化焊接机器人厂家哪家好?
人工智能·机器人·自动化
守城小轩1 天前
Chromium 142 编译指南 Windows篇:depot_tools 安装和配置(三)
自动化·chrome devtools·指纹浏览器·浏览器开发
码农小白猿1 天前
IACheck优化电梯定期检验报告:自动化术语审核提升合规性与效率
大数据·运维·人工智能·ai·自动化·iacheck
守城小轩1 天前
Chromium 142 编译指南 Windows篇:获取源代码(五)
自动化·chrome devtools·指纹浏览器·浏览器开发
0思必得01 天前
[Web自动化] JS基础语法与数据类型
前端·javascript·自动化·html·web自动化