をupdate_cell:gspreadは、私は2枚のGoogleスプレッドシート持っている非常に遅い
QC-多くの列を、私は場合は、2番目のスプレッドシートlastEdited_PEIDの列4が表示されますから値を確認したいです。それがあれば、「ビンゴ!値は、値の
lastEdited-つの列、長いスプレッドシートを発見したのと同じ行の列14に
私は達成その次のコードで:
#acces the documents on Drive
QC = gc.open_by_key("FIRST KEY").sheet1
lastEdited = gc.open_by_key("SECOND KEY").sheet1
#get values from columns and convert to lists
QC_PEID = QC.col_values(4)
lastEdited_PEID = lastEdited.col_values(1)
#iterate by rows and check if value from each row appears in the second document
for value in QC_PEID:
ind = QC_PEID.index(value)
if value in lastEdited_PEID:
QC.update_cell(ind, 14, 'Bingo!')
だから、仕事をしなく非常にゆっくりします(約5分)。私は約50のスプレッドシート(それぞれ6000行)の操作を実行しなければならないので、速度が心配です。
Iは、ループ内の次のコードで(それは一度だけ現れることができる)が見つかりましたときに、第2のリストから要素を削除しようとした:
for value in QC_PEID:
ind = QC_PEID.index(value)
if value in lastEdited_PEID:
QC.update_cell(ind, 14, 'Bingo!')
**lastEdited_PEID.remove('value')**
私はそれがより速く参照リストと同じようにするだろうと思っ短くても驚くほど多くの時間がかかります。
処理を迅速に行うにはどうすればよいですか?
私のテストワークシートでは、処理時間が5分から2秒に短縮されました。バッチ更新によって違いが生じます。感謝万円! – pawelty