Python pygsheets-使用dotenv而不是json文件
连接到gsheets:通常的方法是使用脚本Python pygsheets-使用dotenv而不是json文件,python,pygsheets,Python,Pygsheets,连接到gsheets:通常的方法是使用脚本gsheets.py所在的根文件夹中的creds.json文件运行gc=pygsheets.authorize()(下面的文件夹结构) 希望使用服务\u帐户\u环境\u var而不是使用json文件 creds.json文件如下所示: { "token": null, "refresh_token": "token", "id_token": null, "token_uri": "token_uri",
gsheets.py
所在的根文件夹中的creds.json
文件运行gc=pygsheets.authorize()
(下面的文件夹结构)
希望使用服务\u帐户\u环境\u 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文件:
这假设您已使用上述服务帐户部分中描述的Service Account.json文件的值设置了环境变量key GDRIVE_API_CREDENTIALS set
不幸的是,没有关于如何设置环境变量的指导。
我的思路是:
创建.env文件(我真的不知道如何以env文件格式表达json,所以将单个key:value对包装在{}…:
创建一个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提供给
服务\u帐户\u环境\u var
时,最终结果将是成功连接。如果查看pygsheets代码,可以看到它使用json.load。因此,在您的例子中,只需将整个json文件作为字符串存储在一个env变量中
还请注意,此选项适用于服务文件,您的文件看起来像用户凭据
编辑:
如果已完成身份验证流,则可以将生成的令牌文件直接用作json并从中创建凭据。没有直接选项,您必须从中创建凭据对象。参考此代码
注:现在开始旅行,将更新以包含代码示例。谢谢尼廷。我完成了oauth流,它以json文件的形式生成了一个auth令牌。这是否意味着即使我将此令牌转换为字符串,它也无法工作?i、 e.我是否需要使用服务帐户密钥
# .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
from dotenv import load_dotenv
load_dotenv()
import os
creds = os.getenv('GDRIVE_API_CREDENTIALS')
pygsheets.authorize(service_account_env_var = creds)