使用gspread向Google Sheets插入图片显示过小如何调整尺寸
gspread向Google Sheets插入可控尺寸图片的解决方案
问题核心原因
你之前的实现存在两个错误点:
- 部分
IMAGE公式前缺少=前缀,无法被Google Sheets识别为可执行公式 - 未对应调整插入图片所在单元格的行高、列宽,导致图片被默认的单元格尺寸强制压缩
实现方案
方案1:单元格内嵌入公式实现(图片绑定单元格)
Google Sheets的IMAGE函数参数规则如下:=IMAGE(图片URL, 展示模式, 自定义高度, 自定义宽度)
其中展示模式取值:
- 1:自适应单元格尺寸等比例拉伸(默认值)
- 2:无视比例拉伸完全填充单元格
- 3:保持图片原始尺寸,超出单元格部分会被截断
- 4:使用自定义的宽高数值
配合gspread提供的行高、列宽设置方法,即可实现可控尺寸的图片插入。
方案2:插入悬浮式图片(不绑定单元格)
如果需要可自由拖动、调整大小、不受单元格约束的图片,可以直接使用gspread内置的insert_image方法,无需写公式。
完整可运行示例代码
import gspread from oauth2client.service_account import ServiceAccountCredentials # 授权配置 scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"] creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope) client = gspread.authorize(creds) # 打开对应表格 sheet = client.open("test") worksheet = sheet.worksheet('check') # ---------------------- 方案1:单元格嵌入公式示例 ---------------------- # 示例1:使用原始尺寸展示图片 img_url = 'https://raw.githubusercontent.com/eliasdon/picturetest/main/download.png' worksheet.append_row( ['testpic.png', f'=IMAGE("{img_url}", 3)'], value_input_option='USER_ENTERED' ) # 调整刚插入行的行高,可根据实际行数调整,也可以先获取当前行数再设置 new_row_num = len(worksheet.get_all_values()) worksheet.set_row_height(new_row_num, 300) # 按图片实际高度设置 worksheet.set_column_width(2, 400) # 按图片实际宽度设置第二列的列宽 # 示例2:自定义固定宽高展示 worksheet.append_row( ['自定义尺寸图片', f'=IMAGE("{img_url}", 4, 200, 300)'], # 高200px,宽300px value_input_option='USER_ENTERED' ) new_row_num = len(worksheet.get_all_values()) worksheet.set_row_height(new_row_num, 200) worksheet.set_column_width(2, 300) # ---------------------- 方案2:悬浮图片示例 ---------------------- # 第二个参数为插入位置的单元格锚点,可选参数还可以指定图片的宽高 worksheet.insert_image(img_url, 'C1', width=400, height=300)
注意事项
- 所有插入公式的请求必须带上
value_input_option='USER_ENTERED',否则内容会被识别为纯文本不会执行公式 - 图片的URL必须是公网可直接访问的地址,不能有访问权限限制,否则Google Sheets无法加载图片
内容的提问来源于stack exchange,提问作者Elias
相关产品推荐
相关产品推荐

