跳到主要内容
版本:Next

GoogleSheets

GoogleSheets 源连接器

描述

用于通过 Google Sheets API 从 Google 表格中读取数据。连接器使用 Google Cloud 服务账号凭据读取指定 范围内的内容,并根据用户定义的 schema 把每一行转换为 SeaTunnel 记录。

支持的引擎

Spark
Flink
SeaTunnel Zeta

关键特性

数据类型映射

Google Sheets API 不会返回单元格本身的数据类型 —— 每个单元格读取的都是一个无类型的原始值。连接器 会按照用户声明的 schema 选项对单元格进行类型转换,因此最终输出的 SeaTunnel 类型完全由 schema 决定, 与表格中单元格的原生类型无关。单元格值无法转换为目标 schema 类型时,对应行会失败。

Google Sheets 单元格SeaTunnel 数据类型(按 schema 转换后)
stringstring / 数值 / boolean / 日期
numberint / long / float / double
booleanboolean
datedate / time / timestamp

源选项

名称类型必需默认值描述
service_account_keystring-Google Cloud 服务账号凭据,必须使用 Base64 编码后的 JSON 字符串。
sheet_idstring-Google 表格的 id,即表格 URL 中 /d//edit 之间的长字符串。
sheet_namestring-要读取的工作表(标签页)名称,例如 Sheet1
rangestring-要读取的 A1 表示法范围,例如 A1:C3Sheet1!A1:D100
schemaconfig-上游数据的字段定义,详见 Schema 特性

service_account_key [string]

Google Cloud 服务账号密钥 JSON 文件经过 Base64 编码后的内容。服务账号必须有目标 Google 表格的访问 权限(请将服务账号邮箱加入表格的共享列表)。

sheet_id [string]

要读取的 Google 表格 id,即表格 URL 中 /d//edit 之间的长字符串。

sheet_name [string]

要读取的工作表(标签页)名称,例如 Sheet1

range [string]

要读取的 A1 表示法范围,例如 A1:C3 用于读取固定区域,或 Sheet1!A:D 用于读取整列。

schema [config]

fields [config]

上游数据的字段定义。连接器会把每个单元格作为字符串读取,然后按声明的类型进行转换。可用的类型请参考 Schema 特性

任务示例

简单示例

source {
GoogleSheets {
service_account_key = "seatunnel-test"
sheet_id = "1VI0DvyZK-NIdssSdsDSsSSSC-_-rYMi7ppJiI_jhE"
sheet_name = "sheets01"
range = "A1:C3"
schema = {
fields {
a = int
b = string
c = string
}
}
}
}

配合下游接收器

读取一个工作表并通过 Console 接收器打印读取的行数据。

env {
parallelism = 1
job.mode = "BATCH"
}

source {
GoogleSheets {
service_account_key = "seatunnel-test"
sheet_id = "1VI0DvyZK-NIdssSdsDSsSSSC-_-rYMi7ppJiI_jhE"
sheet_name = "sheets01"
range = "A1:C100"
schema = {
fields {
a = int
b = string
c = string
}
}
}
}

sink {
Console {
}
}

变更日志

Change Log
ChangeCommitVersion
[improve] google sheets options (#8922)https://github.com/apache/seatunnel/commit/48ede612dc2.3.10
[Improve] restruct connector common options (#8634)https://github.com/apache/seatunnel/commit/f3499a6eeb2.3.10
[Improve][API] Make sure the table name in TablePath not be null (#7252)https://github.com/apache/seatunnel/commit/764d8b0bc82.3.7
[Feature][Kafka] Support multi-table source read (#5992)https://github.com/apache/seatunnel/commit/60104602d12.3.6
[Improve][Connector-V2] Replace CommonErrorCodeDeprecated.JSON_OPERATION_FAILED (#5978)https://github.com/apache/seatunnel/commit/456cd177142.3.4
[Improve][Common] Introduce new error define rule (#5793)https://github.com/apache/seatunnel/commit/9d1b2582b22.3.4
Support config column/primaryKey/constraintKey in schema (#5564)https://github.com/apache/seatunnel/commit/eac76b4e502.3.4
Merge branch 'dev' into merge/cdchttps://github.com/apache/seatunnel/commit/4324ee19122.3.1
[Improve][Project] Code format with spotless plugin.https://github.com/apache/seatunnel/commit/423b5830382.3.1
[improve][api] Refactoring schema parse (#4157)https://github.com/apache/seatunnel/commit/b2f573a13e2.3.1
[Improve][build] Give the maven module a human readable name (#4114)https://github.com/apache/seatunnel/commit/d7cd6010512.3.1
[Improve][Project] Code format with spotless plugin. (#4101)https://github.com/apache/seatunnel/commit/a2ab1665612.3.1
[Feature][shade][Jackson] Add seatunnel-jackson module (#3947)https://github.com/apache/seatunnel/commit/5d8862ec9c2.3.1
[Feature][Connector] add get source method to all source connector (#3846)https://github.com/apache/seatunnel/commit/417178fb842.3.1
[Hotfix][OptionRule] Fix option rule about all connectors (#3592)https://github.com/apache/seatunnel/commit/226dc6a1192.3.0
[Improve][Connector-V2][GoogleSheets] Unified exception for GoogleSheets source connector (#3524)https://github.com/apache/seatunnel/commit/eb42d629ad2.3.0
[Feature][Connector-V2][Google Sheets] Add Google Sheets option rules (#3364)https://github.com/apache/seatunnel/commit/da33f730ca2.3.0
fix: schema get error (#3361)https://github.com/apache/seatunnel/commit/fdaa85ed242.3.0
[Feature][Connector-V2][GoogleSheets] Support GoogleSheets Source (#3185)https://github.com/apache/seatunnel/commit/60ecc6428b2.3.0