You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Sheets API自动设置范围至下一个空白单元格?

单元格地址拼接问题解决

你用x="A",1+1得到的是元组,打印时会自动添加空格。正确的字符串拼接方式有两种:

  • 格式化字符串(推荐):x = f"A{1+1}"
  • 字符串拼接:x = "A" + str(1+1)
    两种方式都会生成无空格的目标地址(如"A2")。

自动写入下一个空白单元格的完整解决方案

要实现"写入下一个空白单元格、不覆盖已有数据"的需求,核心是先定位A列的最后非空行,再从下一行开始写入;也可以直接用Sheets API的追加方法自动处理行号。

修改后的完整代码

from __future__ import print_function
from google.oauth2 import service_account
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# 替换为你的配置信息
SERVICE_ACCOUNT_FILE = "你的服务账号密钥文件路径"
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
SAMPLE_SPREADSHEET_ID = '你的表格ID'

# 初始化认证与Sheets服务
creds = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()

# 方法1:手动计算A列下一个空白行(精确控制起始位置)
def get_next_empty_row(sheet_id, sheet_name, column):
    result = sheet.values().get(
        spreadsheetId=sheet_id,
        range=f"{sheet_name}!{column}:{column}"
    ).execute()
    values = result.get('values', [])
    return len(values) + 1  # 行号从1开始,所以下一行是已有行数+1

next_row = get_next_empty_row(SAMPLE_SPREADSHEET_ID, "test", "A")

# 准备要写入的数据
specified = [
    [input("input info to add here:"), 4000],
    ["4/4/2020", 3000]
]

# 写入到目标位置(从A列下一个空白行开始)
request = sheet.values().update(
    spreadsheetId=SAMPLE_SPREADSHEET_ID,
    range=f"test!A{next_row}",
    valueInputOption="USER_ENTERED",
    body={"values": specified}
).execute()

# 方法2:使用append自动追加(更简便,无需手动计算行号)
# request = sheet.values().append(
#     spreadsheetId=SAMPLE_SPREADSHEET_ID,
#     range="test!A1",  # 指定表格区域,API自动识别末尾追加
#     valueInputOption="USER_ENTERED",
#     body={"values": specified}
# ).execute()

print("数据写入成功")

关键说明

  • 手动计算行号的方式适合需要精确控制写入起始列的场景;
  • values.append方法更省心,API会自动识别表格数据末尾并追加新行,推荐日常使用;
  • 务必替换代码中的服务账号路径和表格ID为你自己的实际信息。

内容的提问来源于stack exchange,提问作者Cortex8938

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:43:23