跳至主要内容

Google Sheets

此页面包含 Google Sheets 来源连接器的设置指南和参考信息。

信息

Google Sheets 来源连接器从单个 Google Sheets 电子表格中提取数据。电子表格中的每个工作表都可以同步。要同步多个电子表格,请使用我们的 Google Drive 连接器或在您的 Airbyte 实例中设置多个 Google Sheets 来源连接器。不会访问 Google Drive 中的其他文件。

先决条件

  • 电子表格链接 - 您要同步的 Google 电子表格的链接。
  • 对于 Airbyte Cloud 具有对电子表格访问权限的 Google Workspace 用户
  • 对于 Airbyte 开源版
  • 一个 GCP 项目
  • 在您的 GCP 项目中启用 Google Sheets API
  • 具有访问您要复制的电子表格权限的服务帐户密钥

设置指南

Google Sheets 来源连接器支持通过 OAuth 或服务帐户密钥身份验证进行身份验证。

步骤 1:设置 Google Sheets

对于 Airbyte Cloud

我们强烈建议使用 OAuth,因为它大大简化了设置过程,并允许您直接从 Airbyte UI 进行身份验证

对于 Airbyte 开源版

我们建议使用服务帐户密钥身份验证。请按照以下步骤创建服务帐户、生成密钥并启用 Google Sheets API。

注意

如果您希望使用 OAuth 进行 Airbyte 开源 的身份验证,可以按照 Google 的 OAuth 说明 创建身份验证应用程序。请务必将范围设置为 https://www.googleapis.com/auth/spreadsheets.readonly。您需要为连接器设置获取客户端 ID、客户端密钥和刷新令牌。

设置服务帐户密钥

创建服务帐户

  1. 在您的 Google Cloud 控制台中打开 服务帐户页面
  2. 选择现有项目,或创建一个新项目。
  3. 在页面顶部,单击 + 创建服务帐户
  4. 输入服务帐户的名称和描述,然后单击 创建并继续
  5. 服务帐户权限 下,选择授予服务帐户的角色,然后单击 继续。我们建议 查看者 角色。

生成密钥

  1. 转到 API 控制台/凭据 页面,然后单击您刚刚创建的服务帐户的电子邮件地址。
  2. 密钥 选项卡中,单击 + 添加密钥,然后单击 创建新密钥
  3. 选择JSON 作为密钥类型。这将生成并下载您将用于身份验证的 JSON 密钥文件。点击继续

启用 Google Sheets API

  1. 转到 API 控制台/库 页面。
  2. 确保您已从顶部选择正确的项目。
  3. 找到并选择 Google Sheets API
  4. 单击 启用

如果您的电子表格可以被拥有其链接的任何人查看,则无需进一步操作。如果不是,为您的服务帐户授予访问您的电子表格的权限

在 Airbyte 中设置 Google Sheets 连接器

对于 Airbyte Cloud:

  1. 登录到您的 Airbyte Cloud 账户。
  2. 点击“来源”,然后点击“+ 新来源”。
  3. 在设置来源页面上,从来源类型下拉菜单中选择 Google Sheets。
  4. 输入 Google Sheets 连接器的名称。

对于 Airbyte 开源:

  1. 导航到 Airbyte 开源仪表板。
  2. 点击“来源”,然后点击“+ 新来源”。
  3. 在设置来源页面上,从来源类型下拉菜单中选择 Google Sheets。
  4. 输入 Google Sheets 连接器的名称。
  1. 选择您的身份验证方法
  • 对于 Airbyte Cloud:(推荐) 从身份验证下拉菜单中选择 通过 Google 身份验证(OAuth),单击 使用 Google 登录,然后完成身份验证流程。
  • 对于 Airbyte 开源:(推荐) 从下拉菜单中选择 服务帐户密钥身份验证,并以 JSON 格式输入您的 Google Cloud 服务帐户密钥
  {
"type": "service_account",
"project_id": "YOUR_PROJECT_ID",
"private_key_id": "YOUR_PRIVATE_KEY",
...
}
  • 要通过 OAuth 身份验证您的 Google 帐户,请从下拉菜单中选择 通过 Google 身份验证(OAuth),并输入您的 Google 应用程序的客户端 ID、客户端密钥和刷新令牌。
  1. 对于 电子表格链接,输入 Google 电子表格的链接。要获取链接,请转到您要同步的 Google 电子表格,单击右上角的 共享,然后单击 复制链接
  1. 对于 批处理大小,输入一个整数,该整数表示处理 Google Sheet 时的批处理大小。默认值为 1000000。批处理大小是一个整数,表示每次发送到 Google Sheets API 的行批处理大小。行批处理大小意味着从 google sheet 处理多少行,例如默认值 1000000 将处理行 2-1000002,然后 1000003-2000003,依此类推。根据 Google Sheets API 限制文档,可以每分钟发送最多 300 个请求,但每个单独的请求必须在 180 秒内处理完毕,否则请求将返回超时错误。鉴于此信息,请在确定 batch_size 值时考虑网络速度和 google sheet 的列数。
  1. (可选) 您可以启用 将列名转换为符合 SQL 标准的格式 选项。启用此选项将允许连接器将列名转换为标准化的、SQL 友好的格式。例如,列名 Café Earnings 2022 将转换为 cafe_earnings_2022。如果您目标是基于 SQL 的目的地(例如 Postgres、MySQL),我们建议启用此选项。默认设置为 false。
  2. 点击 Set up source 并等待测试完成。

配置选项

流名称覆盖(重命名工作表/流名称)

Google Sheets 连接器允许您选择性地重命名在 Airbyte 和您的目的地中显示的工作表(选项卡名称)。如果您的工作表名称不够描述性、包含特殊字符或您希望跨来源标准化命名,这将很有用。

工作原理

  • 您可以提供一个覆盖列表,每个覆盖指定一个 source_stream_name(您的电子表格中工作表/选项卡的精确名称)和一个 custom_stream_name(您希望它在 Airbyte 和您的目的地中显示的名称)。
  • 如果您的电子表格中找不到 source_stream_name,它将被忽略并使用默认名称。
  • 此功能仅影响流(工作表/选项卡)名称,不影响字段/列名称。
  • 如果您想重命名字段或列名称,可以在连接创建后使用 Airbyte 映射功能来执行此操作。请参阅 Airbyte 文档,了解有关如何使用映射的更多详细信息。
  • 重命名操作发生在任何其他名称转换或清理选项之前。

示例

假设您的电子表格包含名为 Sheet12024 Q1Summary 的工作表。您希望将它们重命名为 sales_dataq1_2024,并保持 Summary 不变。您将配置

[
{ "source_stream_name": "Sheet1", "custom_stream_name": "sales_data" },
{ "source_stream_name": "2024 Q1", "custom_stream_name": "q1_2024" }
]

发现后,Airbyte 中的流将被命名为 sales_dataq1_2024Summary

如何配置

  • 在 Airbyte UI 中,将您的覆盖项添加到 流名称覆盖 字段,作为对象数组。
  • 如果您不想重命名任何流,请将此字段留空。
  • 添加或更改流名称覆盖后,在 Airbyte 中刷新您的模式,以使新的流名称生效。
  • 覆盖的流将默认使用同步模式:完全刷新(追加),不支持主键。如果您想使用主键和去重,请在您的连接设置中将同步模式更新为“完全刷新 | 覆盖 + 去重”。

Google Sheets 连接器列名称转换

Google Sheets 连接器提供选项来自定义电子表格中的列名称如何转换为符合 SQL 规范。这些设置可以在设置连接器时在 Airbyte UI 中配置。


1. 将列名称转换为符合 SQL 规范的格式

  • 描述:启用后,此选项会将列名称转换为与 SQL 数据库兼容的格式(例如,小写,将空格替换为下划线)。这是启用任何列名称转换所需的首要开关。
  • 默认值:关闭

2. 其他转换选项

以下选项允许您微调列名称转换过程。只有在启用“将列名称转换为符合 SQL 规范的格式”时,它们才会生效。

  • 删除前导和尾随下划线

    • 描述:删除列名称中的前导和尾随下划线。请注意,如果禁用“允许前导数字”,则对于以数字开头的列名称,前导下划线将被保留。
    • 示例:
      • 输入:" EXAMPLE Domain "
      • 输出:"example_domain"
    • 默认值:关闭
  • 组合数字-单词对

    • 描述:将相邻的数字和单词组合成一个单独的标记,不使用分隔符。
    • 示例:
      • 输入:"50th Percentile"
      • 输出:"50th_percentile"(如果启用“允许前导数字”)
      • 输出:"_50th_percentile"(如果禁用“允许前导数字”)
    • 默认值:关闭
  • 删除所有特殊字符

    • 描述:删除所有特殊字符(例如,*?!$%())的列名称。
    • 示例:
      • 输入:"Example ID*"
      • 输出:"example_id"
    • 默认值:关闭
  • 组合字母-数字对

    • 描述:将相邻的字母和数字组合成一个单独的标记,不使用分隔符。
    • 示例:
      • 输入:"Q3 2023"
      • 输出:"q3_2023"
    • 默认值:关闭
  • 允许前导数字

    • 描述:允许列名称以数字开头。如果禁用,则会在以数字开头的列名称前添加前导下划线。
    • 示例:
      • 输入:"50th Percentile"
      • 输出:"50_th_percentile"(如果启用)
      • 输出:"_50_th_percentile"(如果禁用)
    • 默认值:关闭

其他详细信息

  • 所有转换后的列名称都将转换为小写。
  • 多个空格或特殊字符将被合并或删除,而不是替换为多个下划线。
  • 仅使用单个下划线分隔标记。
  • 结果始终对 SQL 友好且易于阅读。

这些选项提供了灵活性,可以根据您的特定数据库要求调整列名称转换。在配置 Google Sheets 连接器时,根据需要在 Airbyte UI 中进行调整。


标题去重

Google Sheets 连接器会自动处理重复的列标题,方法是将单元格位置附加到每个重复的标题名称,以创建唯一的字段名称。这确保即使您的电子表格包含重复的标题名称,所有列都能正确同步。

工作原理

  • 检测到重复标题时,连接器会将 _<cell_position> 附加到每个重复的标题名称
  • 单元格位置遵循标准的 Google Sheet 命名约定(例如,A1、B1、C1 等)
  • 这创建了唯一的字段名称,同时保留了原始标题文本

示例

如果您的电子表格在 C 列和 Q 列(位置 C1 和 Q1)中都有名为 stats 的标题,则连接器将创建两个不同的字段

  • stats_C1(对于位置 C1 的列)
  • stats_Q1(对于位置 Q1 的列)

这确保了来自两列的数据都被正确捕获并同步到您的目标,并清楚地标识了每个字段代表哪个列。


支持的同步模式

Google Sheets 来源连接器支持以下 同步模式

支持的流

所选电子表格中的每个工作表都作为单独的流同步。工作表中的每个选定列都作为字符串字段同步。

Airbyte 仅支持复制 Grid 工作表。

数据类型映射

所选电子表格中的每个工作表都作为单独的流同步。工作表中的每个选定列都作为字符串字段同步。

Airbyte 仅支持复制 Grid 工作表。

集成类型Airbyte 类型备注
任意类型字符串

限制和故障排除

展开以查看有关 Google Sheets 连接器限制和故障排除的详细信息。

连接器限制

速率限制

Google API 速率限制为

  • 每个项目每分钟 300 次读取请求
  • 每个用户每分钟 60 次请求

Airbyte 将请求批量处理到 API,以便有效地提取数据并遵守这些速率限制。我们建议不要使用相同的用户或服务帐户用于超过 3 个 Google Sheets 来源连接器实例,以确保高速传输。

故障排除

  • 如果您的工作表完全为空(没有标题行)或已删除,Airbyte 不会删除目标中的表。如果发生这种情况,同步日志将包含一条消息,说明在同步整个电子表格时跳过了该工作表。
  • 如果电子表格不是 Google Sheets 文件,连接器设置将失败。如果该文件另存为或导入为其他文件类型,设置可能会失败。
  • 请查看我们的 Airbyte 论坛,了解 Google Sheets 来源连接器的常见故障排除问题。

参考

配置字段参考

字段
类型
属性名称
对象
credentials
字符串
spreadsheet_id
布尔值
allow_leading_numbers
整数
batch_size
布尔值
combine_letter_number_pairs
布尔值
combine_number_word_pairs
布尔值
names_conversion
布尔值
read_empty_header_columns
布尔值
删除前导和尾随下划线
布尔值
remove_special_characters
array<object>
stream_name_overrides

变更日志

展开以查看
版本日期拉取请求主题
0.12.182026-01-2071904更新依赖项
0.12.172026-01-1471703更新依赖项
0.12.162025-12-1870510更新依赖项
0.12.152025-12-0369848添加可选标志以读取带有空标题的列
0.12.142025-11-2570029更新依赖项
0.12.132025-11-1869396更新依赖项
0.12.122025-10-2968759更新依赖项
0.12.112025-10-2168254更新依赖项
0.12.102025-10-1667531添加错误处理,以处理导致 500 响应的表格中的意外数据。
0.12.92025-10-1467876更新依赖项
0.12.82025-10-0767395更新依赖项
0.12.72025-09-3065383更新依赖项
0.12.62025-09-1666012更新到 CDK v7
0.12.52025-08-0964633更新依赖项
0.12.42025-08-0264179更新依赖项
0.12.32025-07-2663822更新依赖项
0.12.22025-07-2263334功能:去重标题
0.12.12025-07-1955490更新依赖项
0.12.02025-07-1563305将发布候选版本 0.12.0-rc.2 提升到主版本。
0.12.0-rc.22025-07-1162931修复:处理 SchmemaMatchingExtractor 中意外的 propeties_to_match
0.12.0-rc.12025-07-0262456功能:将连接器迁移到仅限清单格式
0.11.02025-06-1161489功能:添加流名称覆盖选项
0.10.02025-06-0960836功能:添加在使用将列名称转换为符合 SQL 规范的格式 (names_conversion) 时添加额外的清理标志
0.9.62025-05-2260874在单个工作表上对 429 错误使用自定义回退策略
0.9.52025-05-1360259修复启用 names_conversion 时列名称中使用的空格
0.9.42025-03-0154989更新依赖项
0.9.32025-02-2254434更新依赖项
0.9.22025-02-1553720更新依赖项
0.9.12025-02-0851696更新依赖项
0.9.02025-02-0453154将发布候选版本 0.9.0-rc.3 提升到主版本。
0.9.0-rc.32025-01-3152682修复流名称类型
0.9.0-rc.22025-01-3152671修复工作表 ID 编码
0.9.0-rc.12025-01-3050843迁移到低代码
0.8.52025-01-1144270从这个版本开始,Docker 镜像现在是 rootless。 请注意,此版本和未来的版本将与 Airbyte 版本早于 0.64 不兼容
0.8.42024-12-0948835实施集成测试
0.7.42024-09-0945108Google Sheets API 错误现在会导致同步失败
0.7.32024-08-1243921更新依赖项
0.7.22024-08-1043544更新依赖项
0.7.12024-08-0343290更新依赖项
0.7.02024-08-0242975迁移到 CDK v4.3.0
0.6.32024-07-2742826更新依赖项
0.6.22024-07-2241993避免将速率限制视为成功的同步
0.6.12024-07-2042376更新依赖项
0.6.02024-07-1742071迁移到 CDK v3.9.0
0.5.112024-07-1341527更新依赖项
0.5.102024-07-0941273更新依赖项
0.5.92024-07-0641005更新依赖项
0.5.82024-06-2840587将已弃用的 AirbyteLogger 替换为 logging.Logger
0.5.72024-06-2540560在发现期间捕获身份验证错误并引发配置错误
0.5.62024-06-2640533更新依赖项
0.5.52024-06-2540505更新依赖项
0.5.42024-06-2240129更新依赖项
0.5.32024-06-0639225[autopull]将基础镜像升级到 v1.2.2
0.5.22024-06-0238851至少每流发送一次状态消息
0.5.12024-04-1135404添加 row_batch_size 参数以更精细地控制读取记录
0.5.02024-03-2636515解决 poetry 依赖冲突,将记录计数添加到状态消息
0.4.02024-03-1936267将 airbyte-cdk 版本固定到 ^0
0.3.172024-02-2935722添加逻辑以发出流状态
0.3.162024-02-1235136修复 pyproject.toml 中的许可证。
0.3.152024-02-0734944使用 Poetry 管理依赖项。
0.3.142024-01-2334437修复标题单元格过滤
0.3.132024-01-1934376修复名称转换
0.3.122023-12-1433414为 airbyte-lib 准备
0.3.112023-10-1931599基础镜像迁移:移除 Dockerfile 并使用 python-connector-base 镜像
0.3.102023-09-2730487修复由于速率限制而导致增加批处理大小时跳过行的问题。
0.3.92023-09-2530749性能测试 - 在 docker 镜像中包含 socat 二进制文件
0.3.82023-09-2530747性能测试 - 在 docker 镜像中包含 socat 二进制文件
0.3.72023-08-2529826删除规范中的行批处理大小,并在出现速率限制时添加自动增加此值
0.3.62023-08-1629491更新到最新的 CDK
0.3.52023-08-1629427在出现 429 错误时添加停止读取
0.3.42023-05-1529453更新规范描述
0.3.32023-08-1029327添加用户友好的错误消息,用于在发现期间出现 404 和 403 错误
0.3.22023-08-0929246添加检查,在读取时跳过已修改的工作表
0.3.12023-07-0628033修复了多个报告的漏洞(共 25 个),CVE-2022-37434、CVE-2022-42898
0.3.02023-06-2627738许可证更新:Elv2
0.2.392023-05-3126833删除 authSpecification,转而使用 advancedAuth 在规范中
0.2.382023-05-1626097重构配置错误
0.2.372023-02-2123292跳过非网格工作表。
0.2.362023-02-2123272优雅地处理空工作表。
0.2.352023-02-2323057规范化列名称
0.2.342023-02-1523071将最小电子表格 ID 大小更改为 20 个字符
0.2.332023-02-1323278处理身份验证错误
0.2.322023-02-1322884不要使用 http 电子表格。
0.2.312022-10-0919574撤销“将 row_id 添加到行并用作主键”
0.2.302022-10-0919215将 row_id 添加到行并用作主键
0.2.212022-10-0415591清理 AirbyteStream 的实例化
0.2.202022-10-1017766修复解析电子表格 ID 时的空指针异常。
0.2.192022-09-2917410使用最新的 CDK。
0.2.182022-09-2817326迁移到每个流的状态。
0.2.172022-08-0315107在连接器规范中公开行批处理大小
0.2.162022-07-0713729改进配置字段描述
0.2.152022-06-0213446重试导致服务器错误请求
0.2.132022-05-0612685更新 CDK 到 v0.1.56,以便在出现未捕获异常时发出 AirbyeTraceMessage
0.2.122022-04-2012230更新连接器以使用 spec.yaml
0.2.112022-04-1311977将剩余的打印语句替换为 airbyte 日志记录器
0.2.102022-03-2511404允许使用电子表格链接/URL 代替电子表格 ID
0.2.92022-01-259208更新标题和描述
0.2.72021-09-278470迁移到 CDK
0.2.62021-09-276354支持通过 Oauth webflow 连接
0.2.52021-09-125972通过添加受支持的同步模式到 Stream 初始化来修复 full_refresh 测试
0.2.42021-08-055233修复仅包含图表的表格列表时的错误
0.2.32021-06-093973为 Kubernetes 支持添加 AIRBYTE_ENTRYPOINT
0.2.22021-04-202994格式规范
0.2.12021-04-032726修复基础连接器版本控制
0.2.02021-03-092238协议允许未来/未知的属性
0.1.72021-01-211762修复大型电子表格问题
0.1.62021-01-271668采用连接器最佳实践
0.1.52020-12-301438实现退避机制
0.1.42020-11-301046添加使用索引 YAML 文件的连接器