import json import csv import sys with open('output/u27_5_sheet.json', 'r', encoding='utf-8') as f: data = json.load(f) values = data.get('data', {}).get('valueRange', {}).get('values', []) with open('output/u27_5_sheet.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) for row in values: # Each cell is a dictionary or a list sometimes in Feishu API v2, wait, no, in v2 it's usually just list of dicts with type/text or strings. # Actually in Sheets v2 API, values are arrays of arrays containing objects like {"type": "string", "text": "..."} or just strings if unformatted. row_str = [] for cell in row: if isinstance(cell, dict): # if it's a rich text object if cell.get('type') == 'url': row_str.append(cell.get('text', '')) else: # just extract text if possible # typical: [{"type":"text","text":"foo"}] pass elif isinstance(cell, list): # rich text is usually a list of dicts text = "".join([c.get('text', '') if isinstance(c, dict) else str(c) for c in cell]) row_str.append(text) else: row_str.append(str(cell)) writer.writerow(row_str)