如何在Google Sheets API中使用range参数?B:E与B1:E1有何区别?

Google Sheets API append方法range参数差异说明
两个range取值的核心区别
range_ = 'sheet1!B:E'
该参数会定位sheet1的整个B到E列,API在判断追加起始行时,会扫描整个工作表的已使用区域,只要A列有数据,就会把A列的最后一行判定为整张表的最后一行,追加的内容会直接写在这一行的下方,也就是你遇到的A列有值就被带到A列末尾的问题。range_ = 'sheet1!B1:E1'
该参数会定位B1到E1的表头区域,API判断追加行时只会扫描B-E列范围内的连续数据,找到B-E列的最后一个有值的行,在该行下方追加内容,完全不受A列数据的影响。
实现从B3单元格开始新增值的方案
如果你需要固定首次新增内容从B3开始,按以下方式配置即可:
- range参数固定使用
sheet1!B1:E1,规避A列数据的干扰 - 提前在B2单元格填入占位内容(不需要展示可以填空格,后续可删除),确保API扫描B-E列时识别到的最后一行为第2行,追加内容就会自动从第3行开始写入
- 补充其他参数的标准取值:
value_input_option填USER_ENTERED,写入的内容会按普通用户输入的格式解析insert_data_option填INSERT_ROWS,追加时会自动插入新行,不会覆盖已有内容
可直接运行的代码示例
service = discovery.build('sheets', 'v4', credentials=credentials) spreadsheet_id = 'my-spreadsheet-id' # 选B1:E1即可不受A列数据影响 range_ = 'sheet1!B1:E1' value_input_option = 'USER_ENTERED' insert_data_option = 'INSERT_ROWS' # 示例写入内容:B3到E3分别写入值1、2、3、4 value_range_body = { "values": [ [1, 2, 3, 4] ] } request = service.spreadsheets().values().append( spreadsheetId=spreadsheet_id, range=range_, valueInputOption=value_input_option, insertDataOption=insert_data_option, body=value_range_body ) response = request.execute() pprint(response)
内容的提问来源于stack exchange,提问作者gotqks
相关产品推荐
相关产品推荐

