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

使用Google API Client匹配A列编号插入URI至对应行末列

Google Sheets匹配A列编号后插入URI到对应行最后一列的实现方案

需求说明

需要实现:当Google表格A列中的编号(格式如YVA00001、YVA00002)与指定number匹配时,将uri插入该行的最后一列。目前已使用spreadsheet.values().get()和spreadsheet.values().update()方法,但无法正确检查A列数据并定位匹配行完成插入。

原代码问题分析

原代码存在以下关键问题:

  • 错误遍历第一行元素而非所有行的A列数据
  • 匹配逻辑写法错误,无法正确判断编号是否匹配
  • 更新范围固定为第一行最后一列,未定位到匹配的目标行

修正后的代码

import json
import flask
from flask import Flask, jsonify, request, render_template
from flask_cors import CORS
import pandas as pd
from main import GoogleAPIClient


app = flask.Flask(__name__)
CORS(app)
app.config["DEBUG"] = True


class GoogleSheets(GoogleAPIClient):
    def __init__(self) -> None:
        super().__init__(
            'sheets',
            'v4',
            ['https://www.googleapis.com/auth/spreadsheets'],
        )

    def appendWorksheet(self, spreadsheetId: str, range: str, uri: json, number: json):
        result = self.googleAPIService.spreadsheets().values().get(spreadsheetId=spreadsheetId, range=range).execute()
        values = result.get('values', [])
        
        if not values:
            return 0  # 表格无数据直接返回
        
        # 遍历所有行,查找A列匹配number的目标行
        target_row_index = None
        for row_idx, row in enumerate(values):
            # 避免行无A列数据导致索引越界
            if len(row) > 0 and row[0] == number:
                target_row_index = row_idx + 1  # 表格行号从1开始,需转换索引
                break
        
        if target_row_index is None:
            return 0  # 未找到匹配行,直接返回
        
        # 计算最后一列的列字母(A=65,ASCII码转换)
        max_col_count = len(values[0]) if len(values[0]) > 0 else 1
        target_col_letter = chr(64 + max_col_count)
        
        # 构造目标单元格范围
        update_range = f"工作表1!{target_col_letter}{target_row_index}"
        
        # 执行单元格更新
        response = self.googleAPIService.spreadsheets().values().update(
            spreadsheetId=spreadsheetId,
            range=update_range,
            valueInputOption="RAW",
            body={'values': [[uri]]},
        ).execute()
        
        return response.get('updatedCells', 0)  # 返回更新的单元格数量

关键实现说明

  1. 行匹配逻辑:遍历所有行的A列(row[0]),直接对比是否等于指定number,找到后转换为表格实际行号(代码索引从0开始,表格行号从1开始,需+1)
  2. 异常处理:判断表格是否为空、行是否有A列数据,避免索引越界或无数据报错
  3. 目标单元格计算:通过第一行的列数确定最后一列的字母,结合匹配行号构造精准的更新范围
  4. 更新操作:将uri以RAW格式插入到目标单元格,确保数据格式正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:45:52