簡體   English   中英

Gspread:一次格式化特定單元格(不僅僅是一行或一列)

[英]Gspread: Formatting specific cells at once (not just a row or column)

我正在使用 gspread 和 python 來嘗試構建一個程序,將填字游戲的圖像解析為谷歌表格格式。 因此,我需要制作不規則形狀的黑色單元格,例如單元格 A1、B2 和 C3。

現在我一直在嘗試使用 gspreads worksheet.format function 來執行此操作,但它采用 A1 格式作為輸入,據我所知,它只接受范圍(例如 A1:A3)而不是逗號分隔的(例如 A1 ,B2,C3)。

或者,如果我單獨格式化每個單元格,我會遇到谷歌表格 API '寫限制'問題與更大的填字游戲 - 因為我不能在一分鍾內寫超過 60 次。 嘗試執行 batch_update 也會導致同樣的問題。

所以,我的問題是 - 有什么方法可以在不觸發 API 的寫入限制的情況下一次將不規則組織的單元格格式化為相同的顏色? 還是我注定要每秒更新一個單元格的工作表?

不幸的是,用不同的 position 格式化多個單元格需要多個請求。 Spreadsheet.batchUpdate UpdateCellsRequest只能更新單個 A1 表示法的單元格。 示例: A1:A1, A1:C3.

您可以做的是增加 Google Sheets API 的配額或創建一個循環,為每個請求添加計數器並在達到配額之前使用 sleep()。

谷歌表格 API 使用限制

您是否嘗試了format_cell_ranges的批處理選項? 這應該允許您在一次調用中傳遞多個單元格。

從文檔:

fmt = cellFormat(
    backgroundColor=color(1, 0.9, 0.9),
    textFormat=textFormat(bold=True, foregroundColor=color(1, 0, 1)),
    horizontalAlignment='CENTER'
    )

fmt2 = cellFormat(
    backgroundColor=color(0.9, 0.9, 0.9),
    horizontalAlignment='RIGHT'
    )

format_cell_ranges(worksheet, [('A1:J1', fmt), ('K1:K200', fmt2)])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM