跳转到主要内容

Streamlit连接Google Sheets。

项目描述

Streamlit GSheetsConnection

从Streamlit应用程序连接到公共或私有Google Sheets。由st.connection()gspread提供。

GSheets连接有两种模式

  • 在只读模式下,使用公开共享的电子表格URL(只读模式)
  • CRUD操作支持模式,使用服务账户进行身份验证。要使用服务账户模式,您需要在Google开发者控制台中启用Google Drive和Google Sheets API。按照“CRUD模式初始设置”部分,首先对Streamlit应用程序进行身份验证。

Streamlit App

安装

pip install st-gsheets-connection

最小示例:公开共享的电子表格(只读)

# example/st_app.py

import streamlit as st
from streamlit_gsheets import GSheetsConnection

url = "https://docs.google.com/spreadsheets/d/1JDy9md2VZPz4JbYtRPJLs81_3jUK47nx6GYQjgU8qNY/edit?usp=sharing"

conn = st.connection("gsheets", type=GSheetsConnection)

data = conn.read(spreadsheet=url, usecols=[0, 1])
st.dataframe(data)

服务账户/CRUD示例

私有电子表格和/或CRUD模式的初始设置

  1. 在您的Streamlit应用根目录中设置 .streamlit/secrets.toml,有关参考请参阅秘密管理文档
  2. 为项目启用API访问
    • 前往Google开发者控制台,创建一个新的项目(或选择您已有的项目)。
    • 在“搜索API和服务”的框中搜索“Google Drive API”并启用它。
    • 在“搜索API和服务”的框中搜索“Google Sheets API”并启用它。
  3. 使用服务帐户
    • 如果您还没有这样做,请为项目启用API访问。
    • 转到“APIs & Services > Credentials”并选择“创建凭据 > 服务帐户密钥”。
    • 填写表格
    • 点击“创建”和“完成”。
    • 在服务帐户上方点击“管理服务帐户”。
    • 在最近创建的服务帐户附近点击⋮,然后选择“管理密钥”,接着点击“添加密钥 > 创建新密钥”。
    • 选择JSON密钥类型并点击“创建”。

您将自动下载一个包含凭据的JSON文件。它可能看起来像这样

{
    "type": "service_account",
    "project_id": "api-project-XXX",
    "private_key_id": "2cd … ba4",
    "private_key": "-----BEGIN PRIVATE KEY-----\nNrDyLw … jINQh/9\n-----END PRIVATE KEY-----\n",
    "client_email": "473000000000-yoursisdifferent@developer.gserviceaccount.com",
    "client_id": "473 … hd.apps.googleusercontent.com",
    ...
}

请记住已下载凭据文件的路径。另外,在下一步中,您将需要此文件中client_email的值。

  • 非常重要! 前往您的电子表格,并使用上一步中的client_email与客户共享。就像您与其他任何Google帐户一样。如果不这样做,当您尝试从应用程序或脚本访问此电子表格时,您将收到一个gspread.exceptions.SpreadsheetNotFound异常。
  1. streamlit/secrets.toml中放置下载的JSON文件中的service_account配置,格式如下(其中gsheets是您的st.connection名称)
# .streamlit/secrets.toml

[connections.gsheets]
spreadsheet = "<spreadsheet-name-or-url>"
worksheet = "<worksheet-gid-or-folder-id>"  # worksheet GID is used when using Public Spreadsheet URL, when usign service_account it will be picked as folder_id
type = ""  # leave empty when using Public Spreadsheet URL, when using service_account -> type = "service_account"
project_id = ""
private_key_id = ""
private_key = ""
client_email = ""
client_id = ""
auth_uri = ""
token_uri = ""
auth_provider_x509_cert_url = ""
client_x509_cert_url = ""

代码

# example/st_app_gsheets_using_service_account.py

import streamlit as st
from streamlit_gsheets import GSheetsConnection

st.title("Read Google Sheet as DataFrame")

conn = st.connection("gsheets", type=GSheetsConnection)
df = conn.read(worksheet="Example 1")

st.dataframe(df)
# .streamlit/secrets.toml

[connections.gsheets]
spreadsheet = "<spreadsheet-name-or-url>"
worksheet = "<worksheet-gid-or-folder-id>"  # worksheet GID is used when using Public Spreadsheet URL, when usign service_account it will be picked as folder_id
type = ""  # leave empty when using Public Spreadsheet URL, when using service_account -> type = "service_account"
project_id = ""
private_key_id = ""
private_key = ""
client_email = ""
client_id = ""
auth_uri = ""
token_uri = ""
auth_provider_x509_cert_url = ""
client_x509_cert_url = ""
# requirements.txt

streamlit==1.22
git+https://github.com/streamlit/gsheets-connection
pandasql  # this is for example/st_app.py only

完整示例

检查gsheets_connection/example目录以获取完整的使用示例。

问答

  • 这对于没有认证细节的公共电子表格有效吗?还是只有私有电子表格?

    GSheets连接有两种模式

    • 在只读模式下,使用公开共享的电子表格URL(只读模式)
    • CRUD操作支持模式,使用服务账户进行身份验证。要使用服务账户模式,您需要在Google开发者控制台中启用Google Drive和Google Sheets API。按照“CRUD模式初始设置”部分,首先对Streamlit应用程序进行身份验证。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

st_gsheets_connection-0.1.0.tar.gz (9.2 kB 查看哈希值)

上传时间

构建分布

st_gsheets_connection-0.1.0-py3-none-any.whl (8.8 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面