2016-12-04 15 views
1

私のアプリケーションでは、範囲外のセルがあります。現在、私はそれらを1つずつ更新していますが、多くの時間がかかります。私は一回の呼び出しで一括して更新したいと思います。gspread範囲内にない複数のセルを更新する

私はthisのようないくつかの他のSOスレッドを見ましたが、私の場合はセルが範囲外です。ここでは簡単にするために

は私が達成しようとしているものの例である:

worksheet.update_acell("A1", "test1") 
worksheet.update_acell("C5", "test2") 

は、それが1回の呼び出しでない範囲内のセルを更新することはできますか?

+0

私はすべてのテーブルを読み込み、あなたのデータを操作し、すべてのテーブルを再度更新する方が速いと信じています。 –

+0

たとえば、この方法を試すことができます:http://stackoverflow.com/questions/34400635/how-to-write-a-table-list-of-lists-to-google-spreadsheet-using-gspreadテーブルが大きすぎないと効率的です。 –

答えて

1

はい、可能です。これにはWorksheet.update_cellsメソッドを使用できます。

このメソッドの引数はCellオブジェクトのリストであり、このリストの元の場所は関係ありません。あなたは自分をrange方法からそれを取得したり、リストを作成することができます。

a1 = worksheet.acell('A1') 
c5 = worksheet.acell('C5') 
a1.value = 'Hello' 
c5.value = 'World' 
wk.update_cells([a1, c5]) 

これは、1回の呼び出しで複数のセルを更新します。

+0

こんにちはバナッシュ、あなたの答えをありがとう。問題は、セルを介してセルを読むことは、依然として時間がかかるAPIへの個々の呼び出しを行うことである。最初にそれを読むことなくセルオブジェクトを作成する別の方法があったなら、これは完璧な答えでした。 – apadana

+0

これは本当です。今すぐ 'Cell'インスタンスを取得するには、リクエストを行う必要があります。フードの下では、更新リクエストを行うために別のxmlを構築するために必要なxmlを取得します。あなたのマイル数は変わるかもしれませんが、一般的に、読書の要求よりも読書の方が速いです。したがって、複数の更新要求に対して1つの 'update_cells()'を使用すると、まだ改善が得られます。 – Burnash

+0

同様の問題が発生しているように見えます。https://github.com/burnash/gspread/issues/376 – Burnash

関連する問題