У меня есть "бюджет" 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 должна быть первой вкладкой в документе, потому что четкая часть не отображается правильно и всегда очищает первую вкладку.
Есть ли проблема, которую вы видите в коде, которую я не вижу, или вы столкнулись с той же проблемой при обновлении тяжелых электронных таблиц?
Я считаю, что ваша цель, как ситуация следующим образом.
values_clear(range)
в документе gspread, мне показалось, что это метод класса gspread.models.Spreadsheet. Ссылка И, range
из values_clear(range)
это A1Notation.
self.sheet.values_clear('A:AT')
. В этом случае всегда используется 1-я вкладка, поскольку имя листа не используется. Я думал, что это причина вашей проблемы.values_clear(range)
.Когда вышеуказанные пункты отражаются на вашем сценарии, он становится следующим.
google_sheets.clear_range(cell_ref)
To:
google_sheets.clear_range("'{0}'!{1}".format(worksheet_name, cell_ref))
@Cateban Спасибо за ответ. Я рад, что ваша проблема была решена.