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

GCP环境下WorksheetFeed搭配spreadSheetUrl运行失效如何解决?

问题根源

你遇到的302跳转报错是Google正式关停旧版Google Sheets API v3(GData接口)导致的,该接口于2023年9月1日完全下线,原有基于gdata-client开发的访问逻辑全部失效,302跳转是接口关停后的默认跳转行为。


解决方案

1. 替换依赖包

首先移除项目中所有旧的gdata-core、gdata-spreadsheet相关依赖,替换为Google Sheets API v4的官方依赖,Maven配置示例如下:

<dependency>
  <groupId>com.google.apis</groupId>
  <artifactId>google-api-services-sheets</artifactId>
  <version>v4-rev20230815-2.0.0</version>
</dependency>
<dependency>
  <groupId>com.google.oauth-client</groupId>
  <artifactId>google-oauth-client-java6</artifactId>
  <version>1.34.1</version>
</dependency>
<dependency>
  <groupId>com.google.oauth-client</groupId>
  <artifactId>google-oauth-client-jetty</artifactId>
  <version>1.34.1</version>
</dependency>

2. 调整授权与客户端初始化逻辑

原有GData接口的service实例需要替换为Sheets v4的客户端实例,使用服务账号授权的示例代码如下:

// 加载服务账号密钥文件
GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream("service-account-key.json"))
        .createScoped(List.of(SheetsScopes.SPREADSHEETS));
// 初始化Sheets客户端
Sheets sheetsService = new Sheets.Builder(
        GoogleNetHttpTransport.newTrustedTransport(),
        GsonFactory.getDefaultInstance(),
        new HttpCredentialsAdapter(credentials))
        .setApplicationName("你的应用名称")
        .build();

3. 替换工作表读取逻辑

原有获取首个工作表的逻辑可以替换为以下代码:

String spreadsheetId = fileId; // 和你原来的fileId参数一致
// 获取表格的所有工作表信息
Spreadsheet spreadsheet = sheetsService.spreadsheets().get(spreadsheetId).execute();
Sheet firstSheet = spreadsheet.getSheets().get(0);
// 读取工作表属性示例
Integer sheetId = firstSheet.getProperties().getSheetId();
String sheetTitle = firstSheet.getProperties().getTitle();

必要配置检查

  • 登录GCP控制台进入对应项目,在「API和服务」-「启用API和服务」中搜索启用Google Sheets API
  • 确保你的服务账号邮箱已被添加到对应谷歌表格的共享列表中,授予对应的查看/编辑权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:21:02