🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

6060閲覧

Python PandasのDataframeをGoogleスプレッドシートの末尾に一気に貼り付けたい

thathan

総合スコア5

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2019/08/27 11:17

実現したいこと・課題

Pandasで作成したDataframeをGoogleスプレッドシートの末尾に一気に追加する方法で悩んでいます。
(pd例
タイトル 1 2 3
0 タイトル 130 2403 123
1 タイトル 158 5098 594
2 タイトル 239 2303 125
.
.
.
1030

(spread例
タイトル 〇〇数 〇〇数 〇〇数

forで回す方法なども試してみたのですが処理に時間がかかってしまっています。
gspread_dataframeで一気に更新まではできたのでspreadsheetの末尾を取得して追加できないものかと考えています。
プログラミング初心者の為、文章の拙いところ、足りていない場所などあるかもしれませんがどうかご教授いただきたく思います。

もし他の方法などあれば教えていただきたいです。
どうかよろしくお願いします。

該当のソースコード

python

1import gspread 2from oauth2client.service_account import ServiceAccountCredentials 3from gspread_dataframe import get_as_dataframe, set_with_dataframe 4import pandas as pd 5 6 7 8df#用意しているPandasのDataframe 9 10 11sh = gc.open_by_key("スプレッドURL").worksheet("<スプレッドシート名>") 12 13set_with_dataframe(sh, df,resize=False, include_index=False)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

次のような修正はいかがでしょうか。この修正ではgspreadにあるvalues_append(range, params, body)メソッドを使用します。このメソッドで使用するためにdataframeをリストに変換しています。この方法では一度のAPI呼び出しでvaluesをシートの最終行へ追加します。この方法はいくつかある方法の一つとしてみてください。

修正したスクリプト

python

1spreadsheetId = "###" # spreadsheet ID 2sheetName = "###" # sheet name 3 4sh = client.open_by_key(spreadsheetId) 5sh.values_append(sheetName, 6 {'valueInputOption': 'USER_ENTERED'}, 7 {'values': df.values.tolist()} 8 )
  • スクリプトを実行する前にspreadsheetIdsheetNameをセットしてください。spreadsheetIdはURLではありませんのでご注意ください。

注意

  • Spreadsheetを読み書きするための認証、設定は既に完了していることを前提としています。

参考

投稿2019/08/29 05:56

kisojin

総合スコア899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thathan

2019/08/29 09:13

ありがとうございます! 上記のもので解決しました。 まさに探していたものでしたー!!
kisojin

2019/08/29 22:53

無事解決したとのことで安心しました。ご返事ありがとうございました。
guest

0

dataframeをcsvに変換した上で、以下を参考にされてはいかがでしょうか。

https://dev.classmethod.jp/etc/google-spreadsheet-append-csv-from-command-line/

投稿2019/08/28 04:57

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thathan

2019/08/29 09:18

回答ありがとうございます。 提示いただいたサイトとても参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問