【发布时间】:2021-04-12 22:24:51
【问题描述】:
我正在使用从 CSV 获取的数据自动填写 Google 表格。对于自动化,我希望能够使用.find() 来定位特定的单元格值,该单元格值用作开始更新单元格的参考。为了更好地解释:
我的代码使用.find('Cafe Crepe') 来定位属于餐厅“Cafe Crepe”的行和列。在表格中有多个餐厅,其下方的订单、小计等格式相同。
def matchAndWriteFinalCSV(self, sheet, restaurant):
'''
Match orders from Ecwid csv to restaurant in Delivery csv
Write to Final csv
'''
print("WRITE START")
cell = sheet.find(f"{restaurant}")
filtered_list = []
print("WRITE SHEET")
print(f"ROW {cell.row} COL {cell.col} CELL {cell}")
sheet.update('R5', "TEST")
更新
为了说明结果应该是什么:
我决定创建一个订单字典列表(订单编号、小计、tx 等)。使用for 循环,我将编写/更新谷歌表的任务按餐厅划分。在此问题的示例中:我的代码获取属于“Cafe Crepe”的所有订单并开始写入/更新订单#、小计、税等字段。
for restaurant_name, restaurant_orders in orders_per_restaurant.items():
new_row = 5
for order in restaurant_orders:
print(order)
restaurant = restaurant_name
cell = sheet.find(f"{restaurant}")
print(f"ROW {cell.row} COL {cell.col} CELL {cell}")
subtotal = cell.col + 1
tax = cell.col + 2
new_cellrow = cell.row + new_row
write_cell_start = f"R{str(new_cellrow)}C{str(cell.col)}"
write_subtotal = f"R{str(new_cellrow)}C{str(subtotal)}"
sheet.update(write_cell_start, order['order'])
sheet.update(write_subtotal, order['sub-total'])
new_row += 1
new_row = 5
time.sleep(100)
这行得通,但现在如果没有得到"Quota exceeded for quota metric 'Write requests' and limit 'Write requests per minute per user' of service 'sheets.googleapis.com',我无法让这段代码运行超过某个点。我试图了解如何使用batch_update() 实现相同的目标。如何解决我的代码中超过每分钟请求率的问题?
【问题讨论】:
-
很遗憾,来自
I want to be able to .find() to find the restaurant cell and start updating in the cell highlighted blue in the example above. How can I use cell = sheet.find(f"{restaurant}") as a reference to start updating the cells 5 rows below?,我无法理解您的目标。我为我糟糕的英语水平道歉。我可以问你目标的细节吗?如果可以,能否提供您期望的示例输入输出情况? -
@Tanaike 将更新我的问题以更明确我的目标。
-
感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,从您更新的问题中,我仍然无法理解您的问题。但我想试着理解它。当我能正确理解它时,我想考虑解决方案。非常抱歉,我无法尽快解决您的问题。
-
@Tanaike 所以我希望能够识别使用
sheet.update的行和列,并在餐厅名称单元格下写入订单编号、小计、税等。因此,通过使用.find(),我得到例如ROW 2 COL 28 CELL <Cell R2C28 'Cafe Crepe'>。我不知道如何使用它来开始更新位于使用.find()的餐厅名称单元格下方的订单编号、小计等单元格。也许这有助于澄清我正在尝试做的事情。 -
感谢您回复并添加更多信息。我有个问题。你的样本图片是样本输入的情况?如果我的理解是正确的,你能提供使用样本输入情况时的样本输出情况吗?借此,我想尝试了解您的目标。
标签: python google-sheets gspread