joh*_*855 5 python drive google-sheets google-spreadsheet-api gspread
我编写了一个脚本来连接到Google电子表格并从中将数据加载到postgresql数据库中.我已经创建了一个服务帐户并以.json格式获取了必要的凭据,问题是当我尝试与我的服务帐户电子邮件共享Google工作表时,我收到一封电子邮件说:
完全无法传送给下列收件人:
Run Code Online (Sandbox Code Playgroud)dataload@geometric-shine-118101.iam.gserviceaccount.com
永久性故障的技术细节:DNS错误:geometric-shine-118101.iam.gserviceaccount.com的地址解析.失败:找不到域名
该电子邮件与我在.json密钥文件中的电子邮件完全相同.我已经检查了其他帖子,通常应该共享的电子邮件的结构是这样的:
project_name@developer.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)
但我的不同,也许它与此有关?我按照此链接上的说明操作.
这是.json密钥文件的副本:
{
"type": "service_account",
"project_id": "geometric-shine-118101",
"private_key_id": "xxx",
"private_key": "-----BEGIN PRIVATE KEY-----\nxxx\n-----END PRIVATE KEY-----\n",
"client_email": "dataload@geometric-shine-118101.iam.gserviceaccount.com",
"client_id": "117076930343404252458",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dataload%40geometric-shine-118101.iam.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)
我解决了我的问题:
Google已更新其服务帐户详细信息格式,并且还与服务帐户共享电子表格,以便可以从gspread访问它们.
然后我创建了一个新的格式化服务帐户:dataload@geometric-shine-118101.iam.gserviceaccount.com并设置谷歌生成的完全相同的文件作为我的应用程序读取的JSON:
login = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope)
Run Code Online (Sandbox Code Playgroud)
然后在没有通知的情况下共享电子表格和我的服务帐户电子邮件(我刚刚提到的JSON文件中相同)
归档时间: |
|
查看次数: |
2625 次 |
最近记录: |