【问题标题】:Gspread not clearing correct tabGspread没有清除正确的标签
【发布时间】:2020-12-24 18:39:27
【问题描述】:

我有一个 DataFrame“预算”,我试图在一个包含 22 个选项卡和超过 1 个的大型电子表格中上传以某种形式的 RawData 名称:“Raw Data >>”、“RawData”、“RawData_TargetCompletion”

我有以下代码:

class GoogleSheets():
    def __init__(self):
        google_service_account_path = 'some_path'
        scopes = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
        self.credentials = ServiceAccountCredentials.from_json_keyfile_name(google_service_account_path, scopes)
        self.sheets_connection = gspread.authorize(self.credentials)

    def load_spreadsheet(self, spreadsheet_key):
        self.sheet = self.sheets_connection.open_by_key(spreadsheet_key)

    def load_worksheet(self, worksheet_name):
        self.worksheet = self.sheet.worksheet(worksheet_name)

    def clear_range(self, data_range):
        self.sheet.values_clear(data_range)


spreadsheet_key = "this is a spreadsheet key"
worksheet_name = "RawData"
cell_ref = 'A:AT'
google_sheets = sheets.GoogleSheets()
google_sheets.load_spreadsheet(spreadsheet_key)
google_sheets.load_worksheet(worksheet_name)
google_sheets.clear_range(cell_ref)
google_sheets.upload_dataframe(budget)

我有一个问题,在那个繁重的电子表格中,它清除了第一个选项卡(不是 RawData),并在 RawData 表中更新。

这个完全相同的代码,但使用另一个电子表格键可以正常工作,并且无论该 RawData 选项卡的位置如何,都可以清除和更新正确的 RawData 选项卡。 但是在这个沉重的部分,RawData 必须是文档中的第一个选项卡,因为清除部分没有正确映射并且总是清除第一个选项卡。

您是否在我没有看到的代码中看到了问题,或者您在更新繁重的电子表格时遇到了同样的问题?

【问题讨论】:

    标签: python dataframe google-sheets google-sheets-api gspread


    【解决方案1】:

    我相信你的目标如下。

    • 您想使用 gspread 清除范围。
    • 您已经能够使用 Sheets API。

    修改点:

    • 当我在gspread的文档中看到values_clear(range)时,好像是gspread.models.Spreadsheet类的方法。 Ref 和,rangevalues_clear(range) 是 A1Notation。
      • 在您的脚本中,self.sheet.values_clear('A:AT') 运行。在这种情况下,始终使用第一个选项卡,因为不使用工作表名称。我认为这是您的问题的原因。
    • 为了消除您的问题,我想建议将工作表名称用于values_clear(range) 的A1Notation。

    当以上几点反映到你的脚本中时,它变成如下。

    修改脚本:

    从:
    google_sheets.clear_range(cell_ref)
    
    到:
    google_sheets.clear_range("'{0}'!{1}".format(worksheet_name, cell_ref))
    

    参考资料:

    【讨论】:

    • @Cateban 感谢您的回复。很高兴您的问题得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 2023-04-02
    • 2015-10-31
    • 2019-05-09
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多