Kaynağa Gözat

fix(fetch_daily): 飞书上传支持空表头自动写入

- 过滤飞书表头中的 None/空字符串
- 表头为空时自动用 CSV 表头写入第一行

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
yangxiaohui 1 ay önce
ebeveyn
işleme
cf4ecc7db2
1 değiştirilmiş dosya ile 11 ekleme ve 1 silme
  1. 11 1
      fetch_daily.py

+ 11 - 1
fetch_daily.py

@@ -312,8 +312,11 @@ def upload_to_feishu(csv_file, sheet_token, sheet_id=None, sort_spec="dt:desc",
 
     # 读取飞书表头(获取所有列)
     feishu_header = client.read_range_values(access_token, sheet_token, f"{sheet_id}!A1:{header_end_col}1")
+    feishu_cols = []
     if feishu_header and feishu_header[0]:
-        feishu_cols = feishu_header[0]
+        feishu_cols = [c for c in feishu_header[0] if c]  # 过滤 None 和空字符串
+
+    if feishu_cols:
         print(f"飞书表头: {feishu_cols}")
         print(f"CSV表头: {header}")
 
@@ -344,6 +347,13 @@ def upload_to_feishu(csv_file, sheet_token, sheet_id=None, sort_spec="dt:desc",
         converted_rows = new_converted_rows
         header = feishu_cols
         print(f"已按飞书表头顺序重排数据")
+    else:
+        # 飞书表头为空,用 CSV 表头写入
+        print(f"飞书表头为空,使用 CSV 表头写入")
+        header_range = f"{sheet_id}!A1:{column_index_to_letter(len(header))}1"
+        client.batch_update_values(access_token, sheet_token, {
+            "valueRanges": [{"range": header_range, "values": [header]}]
+        })
 
     total_rows = len(converted_rows)
     num_cols = len(header)