#!/usr/bin/env python3 """Fix component configs: clean wrong rows + write correct rows.""" import json, subprocess TOKEN = "t-g1045kg0ZYXHLVSY7EFUPUJUOLBGTOLYLPDKWLYN" SHEET_ID = "wMQVyV" SPREADSHEET_TOKEN = "It4AsFkC7hXHc4te9yUcyLHRnOe" # === STEP 1: Clean up wrongly written rows === clear_rows = [120, 129, 133, 144, 146, 147, 162, 163, 164, 178, 179] for row in clear_rows: body = {"valueRange": {"range": f"{SHEET_ID}!F{row}:F{row}", "values": [[""]]}} result = subprocess.run([ "curl", "-s", "-X", "PUT", f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{SPREADSHEET_TOKEN}/values", "-H", f"Authorization: Bearer {TOKEN}", "-H", "Content-Type: application/json", "-d", json.dumps(body, ensure_ascii=False) ], capture_output=True, text=True) resp = json.loads(result.stdout) print(f"CLEAR Row {row}: code={resp.get('code')}") # === STEP 2: Fix rows with old 情境引入 (replace with 无) === fix_rows = { # Row 119: 对话选择-配图 - change Eva 情境引入 to 无 119: """【任务标题】 查看关闭的门 【资源配置】 图片时机: 互动内容 互动反馈 【情境引入】 无 【互动内容】 要求:选择正确的回复 选项:(音频) 选项1:Look, the door is closed.(正确) - 反馈: 无 选项2:Look, the door is open. - 反馈 Eva: No, this door is closed. Look again. 【后置对话】 无""", # Row 128: 对话挖空-配图 - change Vicky 情境引入 to 无 128: """【任务标题】 还剩最后一扇门 【资源配置】 图片时机: 互动内容 互动反馈 【情境引入】 无 【互动内容】 Only one ___ left.(音频) 选项1:door(正确) 选项2:room 【互动反馈】 正确 Vicky : Yes! Just one more room. 错误 Vicky : Think about it. What do we open? 【后置对话】 无""", } for row, content in sorted(fix_rows.items()): body = {"valueRange": {"range": f"{SHEET_ID}!F{row}:F{row}", "values": [[content]]}} result = subprocess.run([ "curl", "-s", "-X", "PUT", f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{SPREADSHEET_TOKEN}/values", "-H", f"Authorization: Bearer {TOKEN}", "-H", "Content-Type: application/json", "-d", json.dumps(body, ensure_ascii=False) ], capture_output=True, text=True) resp = json.loads(result.stdout) print(f"FIX Row {row}: code={resp.get('code')}") # === STEP 3: Write new content to empty rows === new_rows = { # Row 152: 看图拼词 (1217413) 152: """【任务标题】 拼写 door 的英文 【资源配置】 图片文件名:1217413.png 【互动内容】 任务描述:请拼出门的英文单词 题干:d(2)r 答案:oo 选项:o, a, e, r, n, p 辅助信息:门的英文是 door / 中间有两个一样的字母哦 【后置对话】 无""", # Row 168: 对话挖空 (1217414) 168: """【任务标题】 回忆窗户的状态 【资源配置】无 【情境引入】 无 【互动内容】 I remember that. It was ___ before.(音频) 选项1:closed(正确) 选项2:open 【互动反馈】 正确 Alex : Yes, it was closed. But now it's different. 错误 Alex : No. Think about what I just said about the window. 【后置对话】 无""", # Row 169: 对话挖空 (1217415) 169: """【任务标题】 发现窗户现在是开着的 【资源配置】无 【情境引入】 无 【互动内容】 But now it's ___.(音频) 选项1:open(正确) 选项2:closed 【互动反馈】 正确 Alex : Right! Someone opened it! 错误 Alex : Look at the window again. Is it really closed now? 【后置对话】 无""", # Row 188: 对话朗读 (1217416) 188: """【任务标题】 问候 Grace 和 Dan 【资源配置】图片时机:无 【情境引入】无 【互动内容】 User : I'm glad you get home!(朗读) 【后置对话】 无""", } for row, content in sorted(new_rows.items()): body = {"valueRange": {"range": f"{SHEET_ID}!F{row}:F{row}", "values": [[content]]}} result = subprocess.run([ "curl", "-s", "-X", "PUT", f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{SPREADSHEET_TOKEN}/values", "-H", f"Authorization: Bearer {TOKEN}", "-H", "Content-Type: application/json", "-d", json.dumps(body, ensure_ascii=False) ], capture_output=True, text=True) resp = json.loads(result.stdout) print(f"WRITE Row {row}: code={resp.get('code')}") print("\nDone! All operations completed.")