python - 访问谷歌表格并通过 Python 更新它

标签 python python-3.x

我正在使用以下代码使用 PostgreSQL 表中的数据更新我拥有的 Google 工作表。表格经常刷新,我需要用表格的最新数据更新 Google 表格。

我是 Google API 的新手,浏览了 goggle 帖子并执行了所有步骤,例如与 client_email 共享 google 表格,但它不起作用。

有如下图所示的3列,

enter image description here

列标题在第 3 行,我需要从第 4 行开始更新值。

下面是当前代码,

import psycopg2
import gspread

from oauth2client.service_account import ServiceAccountCredentials
import pprint
#Create scope
scope =  ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']

cnx_psql = psycopg2.connect(host="xxx.xxx.xxx.xx", database="postgres", user="postgres",
                         password="**********", port="5432")
psql_cursor = cnx_psql.cursor()

meta_query = '''select * from dl.quantity;'''
psql_cursor.execute(meta_query)
results = psql_cursor.fetchall()
cell_values = (results)

creds = ServiceAccountCredentials.from_json_keyfile_name('/Users/User_123/Documents/GS/gsheet_key.json',scope)
client = gspread.authorize(creds)

sheet = client.open('https://docs.google.com/spreadsheets/d/***************').sheet1
pp = pprint.PrettyPrinter()

result = sheet.get_all_record()

for i, val in enumerate(cell_values):  
    cell_list[i].value = val  
    sheet.update_cells(cell_list) 

psql_cursor.close()

cnx_psql.close()

出现以下错误,

Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gspread/client.py", line 123, in open self.list_spreadsheet_files() File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gspread/utils.py", line 37, in finditem return next((item for item in seq if func(item))) StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/Users/User_123/Documents/Googlesheet_update.py", line 30, in sheet = client.open('https://docs.google.com/spreadsheets/d/********************').sheet1 File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gspread/client.py", line 131, in open raise SpreadsheetNotFound gspread.exceptions.SpreadsheetNotFound

最佳答案

您的代码和评论表明您正在尝试使用完整的 URL 打开电子表格,但您使用的是仅适用于标题的 open 函数。

来自docs :

You can open a spreadsheet by its title as it appears in Google Docs:

sh = gc.open('My poor gym results')

If you want to be specific, use a key (which can be extracted from the spreadsheet’s url):

sht1 = gc.open_by_key('0BmgG6nO_6dprdS1MN3d3MkdPa142WFRrdnRRUWl1UFE')

Or, if you feel really lazy to extract that key, paste the entire spreadsheet’s url

sht2 = gc.open_by_url('https://docs.google.com/spreadsheet/ccc?key=0Bm...FE&hl')

在你的情况下最后一个例子是要走的路,所以使用 client.open_by_url 而不是 client.open

关于python - 访问谷歌表格并通过 Python 更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58990781/

相关文章:

Python:按键拆分字典列表

python - Django - 在启动时执行代码

python - 如何使用 python 绘制 Friedman-Nemenyi 检验的结果

python-3.x - Flask sqlalchemy postgres 模型问题 :How to avoid entering "id" manually

python - 解析嵌套的 json 负载 python

python - 我可以让 Beautiful Soup 保持属性排序和行缩进吗

python - 如何使用 conda 安装 pydotplus

python - Python中的Runtime.MarshalError

Python:类方法参数和类属性同名

python : List of string in key value pairs to map