pygsheets - 使用 dotenv 而不是 json 文件
pygsheets - Using dotenv instead of json file
连接到 gsheets:通常的方法是 运行 gc = pygsheets.authorize()
与脚本 gsheets.py
相同的根文件夹中的 creds.json
文件(文件夹结构如下)
├── creds.json
├── gsheets.py
想使用 service_account_env_var
而不是 json 文件
creds.json 文件看起来像这样:
{
"token": null,
"refresh_token": "token",
"id_token": null,
"token_uri": "token_uri",
"client_id": "client_id.apps.googleusercontent.com",
"client_secret": "secret"
}
如何使用 json 文件中的凭据创建 .env 文件?
根据 pygsheets 文档:
pygsheets - Environment variables
This assumes you have set an environment variable key GDRIVE_API_CREDENTIALS set with the value of the Service Account .json file described in the above Service Account section.
不幸的是,没有关于如何设置环境变量的指南。
我的思路是:
创建 .env 文件(我真的不确定如何在 env 文件格式中表达 json,所以将单个 key:value 对包装在 {}...):
# .env
GDRIVE_API_CREDENTIALS = {
token = null
refresh_token = token
id_token = null
token_uri = token_uri
client_id = client_id.apps.googleusercontent.com
client_secret = secret }
创建 settings.py:
# settings.py
from dotenv import load_dotenv
load_dotenv()
import os
creds = os.getenv('GDRIVE_API_CREDENTIALS')
pygsheets.authorize(service_account_env_var = creds)
当 creds 作为参数提供给 service_account_env_var
时,最终结果将是成功连接
如果您查看 pygsheets 代码,您会发现它使用 json.loads。因此,在您的情况下,只需将整个 json 文件作为字符串存储在环境变量中。
另请注意,此选项适用于服务文件,您的文件看起来像用户凭据。
编辑:
如果您已完成身份验证流程,则可以直接将生成的令牌文件用作 json 并从中创建凭据。没有直接的选项,您必须从中创建凭据对象。 https://github.com/nithinmurali/pygsheets/blob/staging/pygsheets/authorization.py#L37 请参阅此代码以供参考。
PS。现在正在旅行,将更新以包含代码示例。
连接到 gsheets:通常的方法是 运行 gc = pygsheets.authorize()
与脚本 gsheets.py
相同的根文件夹中的 creds.json
文件(文件夹结构如下)
├── creds.json
├── gsheets.py
想使用 service_account_env_var
而不是 json 文件
creds.json 文件看起来像这样:
{
"token": null,
"refresh_token": "token",
"id_token": null,
"token_uri": "token_uri",
"client_id": "client_id.apps.googleusercontent.com",
"client_secret": "secret"
}
如何使用 json 文件中的凭据创建 .env 文件?
根据 pygsheets 文档: pygsheets - Environment variables
This assumes you have set an environment variable key GDRIVE_API_CREDENTIALS set with the value of the Service Account .json file described in the above Service Account section.
不幸的是,没有关于如何设置环境变量的指南。 我的思路是:
创建 .env 文件(我真的不确定如何在 env 文件格式中表达 json,所以将单个 key:value 对包装在 {}...):
# .env
GDRIVE_API_CREDENTIALS = {
token = null
refresh_token = token
id_token = null
token_uri = token_uri
client_id = client_id.apps.googleusercontent.com
client_secret = secret }
创建 settings.py:
# settings.py
from dotenv import load_dotenv
load_dotenv()
import os
creds = os.getenv('GDRIVE_API_CREDENTIALS')
pygsheets.authorize(service_account_env_var = creds)
当 creds 作为参数提供给 service_account_env_var
如果您查看 pygsheets 代码,您会发现它使用 json.loads。因此,在您的情况下,只需将整个 json 文件作为字符串存储在环境变量中。
另请注意,此选项适用于服务文件,您的文件看起来像用户凭据。
编辑: 如果您已完成身份验证流程,则可以直接将生成的令牌文件用作 json 并从中创建凭据。没有直接的选项,您必须从中创建凭据对象。 https://github.com/nithinmurali/pygsheets/blob/staging/pygsheets/authorization.py#L37 请参阅此代码以供参考。
PS。现在正在旅行,将更新以包含代码示例。