0

连接到 gsheets:通常的方法是在gc = pygsheets.authorize()creds.json脚本相同的根文件夹中运行文件gsheets.py(下面的文件夹结构)

├── 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 - 环境变量

这假设您已设置环境变量键 GDRIVE_API_CREDENTIALS 设置为上述服务帐户部分中描述的服务帐户 .json 文件的值。

不幸的是,没有关于如何设置环境变量的指导。我的思路是:

创建 .env 文件(我真的不确定如何以 env 文件格式表达 json,因此将各个键:值对包装在 {}...):

# .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 作为 arg 提供给service_account_env_var

4

1 回答 1

1

如果您查看 pygsheets 代码,您可以看到它使用 json.loads。因此,在您的情况下,只需将整个 json 文件作为字符串存储在 env 变量中。

另请注意,此选项适用于服务文件,您的文件看起来像用户凭据。

编辑:如果您已完成身份验证流程,则可以将生成的令牌文件直接用作 json 并从中创建凭据。没有直接的选择,您必须从中创建凭据对象。https://github.com/nithinmurali/pygsheets/blob/staging/pygsheets/authorization.py#L37请参阅此代码以供参考。

PS。现在正在旅行,将更新以包含代码示例。

于 2019-10-31T15:56:44.777 回答