0

私は現在、googlesheets4 を利用して、アプリの起動時に GoogleSheets から大きなデータセットを取得する R Shiny アプリに取り組んでいます。このデータセットをアプリに読み込むのに約 2 分かかり、アプリ全体の読み込み時間が遅くなります。

私のアプリの唯一のビジュアルは、この GoogleSheets データに基づいているため、この特定のデータセットに大きく依存しています。データセットがアプリに取り込まれると、フィルター処理されるため、はるかに小さくなります (85,000 行 ---> 1,000 行)。この GoogleSheet データは毎日更新されるため、事前に一度ダウンロードして .csv として永久に保存する余裕はありません。

これには、私が試したものの、うまくいかなかった 2 つの異なる修正方法があります。

  1. 別のアプリを実行します。私の最初のアイデアは、完全に別の Shiny アプリを作成することでした。これは、GoogleSheets df を 1 日 1 回プルすることのみを目的としています。プルすると、必要なデータ クリーニングを実行して最大 1,000 行に減らし、小さい方の df を別の GoogleSheet リンクにプッシュします。次に、ビジュアルを使用した元のアプリは、常にその新しい GoogleSheet を参照します (読み込みにかかる時間が大幅に短縮されます)。

ここで遭遇した問題は、googlesheets4 を使用して新しい GoogleSheets ドキュメントを作成する方法がわからなかったことです。誰かがそれを行う方法を知っていれば、それは大歓迎です。

  1. GoogleSheets データの読み込みを一時的に遅らせ、最初にビジュアルを入力します。私の 2 番目のアイデアは、GoogleSheets df をプルするコードを起動時に遅らせて、ビジュアルを最初に (古いデータを使用して) 取り込み、次に GoogleSheets プルを実行させることでした。プルが完了したら、ビジュアルに更新されたデータを再入力します。

これを実現するための最善/正しい方法がわかりませんでした。sleep.sys() と futures/promises をいじってみましたが、正しく動作させることができませんでした。

誰かが私の2つの異なるアプローチについて考えているかどうか、または私が考えていないより良いアプローチがあるかどうか興味があります...

ありがとう!

4

1 に答える 1

0

write_sheetGoogleシートにデータを書き込むことができるという関数があります。それはあなたのために働きますか?

googlesheets4::write_sheet(data = your_data,
                           ss = spread_sheet_identifier,
                           sheet = "name_of_sheet_to_write_in")

シート内のすべてを削除せずに何かを追加するだけの場合、関数はsheet_append

googlesheets4::sheet_append(data = your_data,
                           ss = spread_sheet_identifier,
                           sheet = "name_of_sheet_to_write_in")

認証情報を保存できるかどうかはわかりませんが、github アクションを使用できませんでしたか? それとも、ローカル コンピューターでの cron ジョブですか?

于 2020-11-17T18:44:16.400 に答える