使用Python调用Spreadsheet API实现两列相乘写入新列的问题求解
问题根因
- API方法不匹配:你构造的请求体属于批量更新格式,但是调用了
spreadsheets().values().update()方法,该方法仅支持直接写入单元格值,无法解析requests数组结构的批量请求,需要改用spreadsheets().batchUpdate()方法。 - 列索引错误:Google Sheets API的列索引从0开始计数,A列对应索引0,你需要写入的G列对应索引为6,原代码中
startColumnIndex填7对应是H列,不符合需求。 - 参数误用:
range下的sheetId是单个工作表的独立ID,不能填写全局电子表格的spreadsheetId,需要替换为你要操作的工作表ID。
修正后代码
request_body ={ "requests": [ { "repeatCell": { "range": { "sheetId": your_worksheet_id, # 替换为目标工作表的ID "startRowIndex": 2, "endRowIndex": 15, "startColumnIndex": 6, # G列对应索引为6 "endColumnIndex": 7 }, "cell": { "userEnteredValue": { "formulaValue": "=FLOOR(E2*C2)" } }, "fields": "userEnteredValue" } } ] } # 调用批量更新接口 response = serviceSheets.spreadsheets().batchUpdate( spreadsheetId=spreadsheetId, body=request_body ).execute()
补充说明
repeatCell接口会自动处理公式的相对引用,写入G2行的公式为=FLOOR(E2*C2),G3行自动变为=FLOOR(E3*C3),符合逐行计算C列和E列乘积的需求。
内容的提问来源于stack exchange,提问作者Ozy
相关产品推荐
相关产品推荐

