🐶
Python×Selenium×gspreadでよく使うコードTips
スプレッドシート更新時に列数をアルファベット表記に直すロジック
要は26進数だとおもって処理してあげればいいんだよね。Spreadsheet更新するとき割と使うからメモ。
import math
アルファベット = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
# うけとったIndexをSpreadSheet列番号(A1 notation)に変換して返すメソッド
# 0 -> A
# 25 -> Z
# 26 -> AA
# 52 -> BA
def 数字をスプレッドシート用列番号に変換(列数):
if 列数 >= len(アルファベット):
return 数字をスプレッドシート用列番号に変換(math.floor(列数 / len(アルファベット)) - 1) + 数字をスプレッドシート用列番号に変換(列数 % len(アルファベット))
return アルファベット[列数]
googleスプレッドシートへの複数行列への更新を行う方法
google スプレッドシートは100秒以内に100リクエスト超えるとエラーを返すように設定されているので、
データ更新時はなるべくまとめて更新してあげるのがコツ。
以下のメソッドでは、始行, 終行, 始列, 終列をあたえることで特定の行列にデータを流し込むことができる。
更新するデータリストは1次元配列にしないと行けないので注意!
def スプレッドシート更新_複数行列(更新するデータリスト, 始行, 終行, 始列, 終列, 更新対象スプレッドシート):
更新始列_変換後 = 数字をスプレッドシート用列番号に変換(始列) #上記 スプレッドシート更新時に列数をアルファベット表記に直すロジック参照
更新終列_変換後 = 数字をスプレッドシート用列番号に変換(終列) #上記 スプレッドシート更新時に列数をアルファベット表記に直すロジック参照
# 編集する範囲を指定、A1セルから、リストの要素数をカウントしたものを指定する
スプレッドシート用更新リスト = 更新対象スプレッドシート.range(
更新始列_変換後+str(始行)+':' + 更新終列_変換後+str(終行)
)
# cell_listにtest_listの値を流し込む
for i, cell in enumerate(スプレッドシート用更新リスト):
cell.value = 更新するデータリスト[i]
# 最後にupdate_cellsで流し込む
更新対象スプレッドシート.update_cells(スプレッドシート用更新リスト, value_input_option='USER_ENTERED')
スプレッドシートにデータを挿入する際、式や日付を認識させたい
update_cellsする際に value_input_option='USER_ENTERED' を付けてあげる
更新対象スプレッドシート.update_cells(スプレッドシート用更新リスト, value_input_option='USER_ENTERED')
スプレッドシートにデータを挿入する差異、'001'を'1'に変換させたくない
書式なしテキストとして挿入したいのだけど、スマートなやり方が分からなかった。。(誰か知ってたら教えてください)
とりあえず、'001'にクォーテーションマークを付けてあげることで(強引に)解決した
更新したいデータ = '001' #このままだとスプレッドシートに挿入したときに「1」に変換されてしまう
スプレッドシート用更新データ = "'" + 更新したいデータ # 「'」を先頭につけることで文字列と認識させることができる
Discussion