""" Test script: write a single cell with rich text to feishu sheet """ import json, requests, os CRED_DIR = "/root/.openclaw/credentials" BASE_URL = "https://open.feishu.cn/open-apis" def get_token(name="xiaobian"): config_path = os.path.join(CRED_DIR, name, "config.json") with open(config_path) as f: config = json.load(f) app_id = config["apps"][0]["appId"] app_secret = config["apps"][0]["appSecret"] resp = requests.post( f"{BASE_URL}/auth/v3/tenant_access_token/internal", json={"app_id": app_id, "app_secret": app_secret}, timeout=10, ) return resp.json()["tenant_access_token"] token = get_token() spreadsheet_token = "NiajsPDjXhQHn8tURCeck8zlndd" # Try textElements format for rich text cell_data = { "textElements": [ { "textElementType": "TEXT_RUN", "textRun": { "text": "This is ", "textElementStyle": {} } }, { "textElementType": "TEXT_RUN", "textRun": { "text": "BOLD RED", "textElementStyle": { "bold": True, "textColor": { "red": 1.0, "green": 0.0, "blue": 0.0, "alpha": 0.0 } } } }, { "textElementType": "TEXT_RUN", "textRun": { "text": " text!", "textElementStyle": {} } } ] } values = [ ["TEST RICH TEXT", cell_data, "", ""] ] resp = requests.put( f"{BASE_URL}/sheets/v2/spreadsheets/{spreadsheet_token}/values", headers={ "Authorization": f"Bearer {token}", "Content-Type": "application/json", }, json={ "valueRange": { "range": "3O2sso!A1:D1", "values": values, }, }, timeout=30, ) result = resp.json() print(json.dumps(result, indent=2, ensure_ascii=False)) # Also read back to see format read_resp = requests.get( f"{BASE_URL}/sheets/v2/spreadsheets/{spreadsheet_token}/values/3O2sso!A1:D1", headers={"Authorization": f"Bearer {token}"}, timeout=10, ) print("\n--- READ BACK ---") print(json.dumps(read_resp.json(), indent=2, ensure_ascii=False))