从 Google 表格中的单元格中提取评论

问题描述 投票:0回答:1

我正在使用 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)
python-3.x google-sheets openpyxl google-api-python-client
1个回答
0
投票

关于您的以下问题,

我已经通过提供 Google Work Sheet 的本地路径来测试 openpyxl,它确实提取了注释,但我需要弄清楚它如何与 Google Sheet API 一起使用。

问题和解决方法:

在当前阶段,可以将注释和评论添加到Google电子表格中的单元格中。从你的问题来看,我认为你说的是单元格的注释而不是注释。

如果我的理解正确的话,Sheets API无法检索评论。可以使用 Drive API 检索它们。 Ref 但不幸的是,在现阶段,虽然可以通过 Drive API 检索评论,但无法获知检索到的评论的单元格坐标,因为范围 ID 无法与单元格坐标对应。

从这种情况来看,作为当前的解决方法,当您想要使用 Python 从 Google Spreadsheet 检索评论和其他值以及元数据时,以下流程怎么样?

  1. 使用 Sheets API 的“方法:spreadsheets.get”从 Google Spreadsheet 检索值和元数据。如果你只想检索值,我认为也可以使用“方法:电子表格.values.get”。

    • 现阶段,gspread 还没有使用“方法:spreadsheets.get”的方法。但是,可以在此线程中看到示例脚本。
  2. 为了从 Google 电子表格中检索评论,请将 Google 电子表格导出为 XLSX 数据,并使用 openpyxl 从 XLSX 数据中检索评论。

    • 使用 gspread 授权将 Google Spreadsheet 导出为 XLSX 的示例脚本可以在 this thread 看到。
  3. 合并两个值。

按照这个流程,我想你的目标就可以实现了。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.