Python - 使 gspread.service_account 使用 python 字典或字符串而不是文件名
Python - Make gspread.service_account take a python dictionary or string instead of file name
我目前正在使用 google 工作表,并且正在使用 python 库 gspread
使其自动化。我的代码的第一行是导入 gspread 库并使用 service-account.json
文件登录服务帐户 google 控制台给我们。
import gspread
account = gspread.service_account(filename='service-account.json')
但我希望它使用 python 字典而不是文件,所以我想要这样的东西
import gspread
creds = {'type': 'service_account', 'project_id': 'hidden', 'private_key_id': 'hidden', 'private_key': 'hidden', 'client_email': 'hidden', 'client_id': 'hidden', 'auth_uri': 'hidden', 'token_uri': 'hidden', 'auth_provider_x509_cert_url': 'hidden', 'client_x509_cert_url': 'hidden'}
#login to service account using these creditionals
我似乎找不到任何可以做到这一点的东西,可能是因为我缺乏搜索技巧。
谢谢
看到gspread的官方文档,发现了下面的示例脚本。 Ref
示例脚本:
import gspread
credentials = {
"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",
...
}
gc = gspread.service_account_from_dict(credentials)
sh = gc.open("Example spreadsheet")
print(sh.sheet1.get('A1'))
我测试这个脚本的时候要求包含token_uri
如下。并且,在我的情况下需要使用 private_key
、client_email
和 token_uri
的值。但是,我不确定我的情况是否与您的情况相同。所以,请根据您的情况测试上述脚本。
credentials = {
"private_key": "-----BEGIN PRIVATE KEY-----\nNrDyLw … jINQh/9\n-----END PRIVATE KEY-----\n",
"client_email": "473000000000-yoursisdifferent@developer.gserviceaccount.com",
"token_uri": "https://oauth2.googleapis.com/token",
}
参考:
我目前正在使用 google 工作表,并且正在使用 python 库 gspread
使其自动化。我的代码的第一行是导入 gspread 库并使用 service-account.json
文件登录服务帐户 google 控制台给我们。
import gspread
account = gspread.service_account(filename='service-account.json')
但我希望它使用 python 字典而不是文件,所以我想要这样的东西
import gspread
creds = {'type': 'service_account', 'project_id': 'hidden', 'private_key_id': 'hidden', 'private_key': 'hidden', 'client_email': 'hidden', 'client_id': 'hidden', 'auth_uri': 'hidden', 'token_uri': 'hidden', 'auth_provider_x509_cert_url': 'hidden', 'client_x509_cert_url': 'hidden'}
#login to service account using these creditionals
我似乎找不到任何可以做到这一点的东西,可能是因为我缺乏搜索技巧。 谢谢
看到gspread的官方文档,发现了下面的示例脚本。 Ref
示例脚本:
import gspread
credentials = {
"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",
...
}
gc = gspread.service_account_from_dict(credentials)
sh = gc.open("Example spreadsheet")
print(sh.sheet1.get('A1'))
我测试这个脚本的时候要求包含
token_uri
如下。并且,在我的情况下需要使用private_key
、client_email
和token_uri
的值。但是,我不确定我的情况是否与您的情况相同。所以,请根据您的情况测试上述脚本。credentials = { "private_key": "-----BEGIN PRIVATE KEY-----\nNrDyLw … jINQh/9\n-----END PRIVATE KEY-----\n", "client_email": "473000000000-yoursisdifferent@developer.gserviceaccount.com", "token_uri": "https://oauth2.googleapis.com/token", }