我正在尝试将内容写到工作表中,但我得到了
gspread.exceptions.APIError: {'code': 429, 'message': "Quota exceeded for quota group 'WriteGroup' and limit 'Write requests per user per 100 seconds'....
如何编辑我的代码,以便它没有达到配额限制或在达到配额后的某个时间继续?尝试过time.sleep()
,但是它不起作用,或者我无法将其放置在正确的位置。
这是我的gspread代码
class CpfSearch(object):
def __init__(self, spreadsheet_name):
self.cpf_col = 1
self.nome_col = 2
self.age_col = 3
self.beneficio_col = 4
self.concessao_col = 5
self.salario_col = 6
self.bancos_col = 7
self.bancocard_col = 8
self.consig_col = 9
self.card_col = 15
scope = ['https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive.readonly']
creds = ServiceAccountCredentials.from_json_keyfile_name('CONSULTAS.json', scope)
client = gspread.authorize(creds)
self.sheet = client.open(spreadsheet_name).sheet1
def process_cpf_list(self):
# SKIP OVER COLUMN HEADING IN THE SPREADSHEET
cpfs = self.sheet.col_values(self.cpf_col)[1:]
bot_url = BOT(cpfs)
nomes, idades, beneficios, concessoes, salarios, bancoss, bancoscard, consigs, cards = bot_url.search_cpfs()
# UPDATE THE SHEET
print("Atualizando...")
for cpfs in range(len(nomes)):
time.sleep(1)
self.sheet.update_cell(cpfs + 2, self.nome_col, nomes[cpfs])
self.sheet.update_cell(cpfs + 2, self.age_col, idades[cpfs])
self.sheet.update_cell(cpfs + 2, self.beneficio_col, beneficios[cpfs])
self.sheet.update_cell(cpfs + 2, self.concessao_col, concessoes[cpfs])
self.sheet.update_cell(cpfs + 2, self.salario_col, salarios[cpfs])
self.sheet.update_cell(cpfs + 2, self.bancos_col, bancoss[cpfs])
self.sheet.update_cell(cpfs + 2, self.bancocard_col, bancoscard[cpfs])
self.sheet.update_cell(cpfs + 2, self.consig_col, consigs[cpfs])
self.sheet.update_cell(cpfs + 2, self.card_col, cards[cpfs])
cpf_updater = CpfSearch('TESTE')
cpf_updater.process_cpf_list()
这个答案怎么样?请认为这只是几个可能的答案之一。
在这个答案中,我想建议创建一个包含值的数组,并使用values_update
的方法将该数组放入Spreadsheet。可以通过一个API调用来放置值。由此,我认为您的问题可能会得到解决。
修改脚本后,请进行如下修改。
self.sheet = client.open(spreadsheet_name).sheet1
self.spreadsheet = client.open(spreadsheet_name)
self.sheet = self.spreadsheet.sheet1
和
for cpfs in range(len(nomes)):
time.sleep(1)
self.sheet.update_cell(cpfs + 2, self.nome_col, nomes[cpfs])
self.sheet.update_cell(cpfs + 2, self.age_col, idades[cpfs])
self.sheet.update_cell(cpfs + 2, self.beneficio_col, beneficios[cpfs])
self.sheet.update_cell(cpfs + 2, self.concessao_col, concessoes[cpfs])
self.sheet.update_cell(cpfs + 2, self.salario_col, salarios[cpfs])
self.sheet.update_cell(cpfs + 2, self.bancos_col, bancoss[cpfs])
self.sheet.update_cell(cpfs + 2, self.bancocard_col, bancoscard[cpfs])
self.sheet.update_cell(cpfs + 2, self.consig_col, consigs[cpfs])
self.sheet.update_cell(cpfs + 2, self.card_col, cards[cpfs])
values = []
for cpfs in range(len(nomes)):
values.append([nomes[cpfs], idades[cpfs], beneficios[cpfs], concessoes[cpfs], salarios[cpfs], bancoss[cpfs], bancoscard[cpfs], consigs[cpfs], "", "", "", "", "", cards[cpfs]])
rng = "'" + self.sheet._properties['title'] + "'!B2"
self.spreadsheet.values_update(rng, params={'valueInputOption': 'USER_ENTERED'}, body={'values': values})
如果我误解了你的问题,而这不是你想要的方向,我深表歉意。