连接到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 - Environment variables
这假定您已经设置了一个环境变量键GDRIVE_API_CREDENTIALS,该键设置为上述服务帐户部分中所述的服务帐户.json文件的值。
不幸的是,没有关于如何设置环境变量的指导。 我在考虑以下方面:
创建.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 }
创建一个设置。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
答案 0 :(得分:1)
如果查看pygsheets代码,则可以使用json.loads看到它。因此,在您的情况下,只需将整个json文件作为字符串存储在env变量中即可。
还请注意,此选项用于服务文件,您的文件看起来像用户凭证。
编辑: 如果您已完成身份验证流程,则可以将生成的令牌文件直接用作json并从中创建凭证。没有直接的选择,您将必须从中创建凭证对象。 https://github.com/nithinmurali/pygsheets/blob/staging/pygsheets/authorization.py#L37请参阅此代码以供参考。
PS。现在旅行,将进行更新以包括代码示例。