我正在使用 gspread 与我的 Google 电子表格和 pandas 交互来操作该数据。我已经设置了一个 Google API 帐户,并按照this文章完成了所有身份验证。我能够检索除单元格注释之外的数据。在我的 Google Sheets 数据集中,我有某些列,并且某些单元格上存在一些注释。我的最终目标是将电子表格数据转换为对象数组,其中每个对象代表一条单行记录,如果任何单元格中存在注释,那么我也需要提取该注释。
我已经尝试过pygsheets,但它不支持评论功能,也无法在 gpsread 中找到任何内容来提取评论。
我已经通过提供 Google 工作表的本地路径来测试 openpyxl,它确实提取了注释,但我需要弄清楚它如何与 Google Sheet API 一起使用。
示例代码:
with open("automate-0738852.json", 'r') as j:
service_account_info = json.loads(j.read())
credentials = service_account.Credentials.from_service_account_info(service_account_info)
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
creds_with_scope = credentials.with_scopes(scope)
client = gspread.authorize(creds_with_scope)
gc_client = pygsheets.authorize(custom_credentials=creds_with_scope)
spreadsheet = client.open_by_url('https://docs.google.com/spreadsheets/d/spreadsheetID/edit?usp=sharing')
worksheet = spreadsheet.get_worksheet(0)
records_data = worksheet.get_all_records(head=6)
records_df = pd.DataFrame.from_dict(records_data)
# Removing the empty title header
records_df.columns = records_df.columns.astype(str).str.strip()
records_df.drop(columns=[''], errors='ignore', inplace=True)
关于您的以下问题,
我已经通过提供 Google Work Sheet 的本地路径来测试 openpyxl,它确实提取了注释,但我需要弄清楚它如何与 Google Sheet API 一起使用。
在当前阶段,可以将注释和评论添加到Google电子表格中的单元格中。从你的问题来看,我认为你说的是单元格的注释而不是注释。
如果我的理解正确的话,Sheets API无法检索评论。可以使用 Drive API 检索它们。 Ref 但不幸的是,在现阶段,虽然可以通过 Drive API 检索评论,但无法获知检索到的评论的单元格坐标,因为范围 ID 无法与单元格坐标对应。
从这种情况来看,作为当前的解决方法,当您想要使用 Python 从 Google Spreadsheet 检索评论和其他值以及元数据时,以下流程怎么样?
使用 Sheets API 的“方法:spreadsheets.get”从 Google Spreadsheet 检索值和元数据。如果你只想检索值,我认为也可以使用“方法:电子表格.values.get”。
为了从 Google 电子表格中检索评论,请将 Google 电子表格导出为 XLSX 数据,并使用 openpyxl 从 XLSX 数据中检索评论。
合并两个值。
按照这个流程,我想你的目标就可以实现了。