皆さん、こんにちは
この記事では、SpreadSheetに対して、色々と書き込みを行っていきます。
最後にはfor文を使って、連続で書き込む方法も記載しているので、SpreadSheetの自動化のきっかけにしてください!
SpreadSheetのドキュメントを確認する
私のブログを含め、様々なサイトでSpreadSheetの操作方法がまとまっているかと思います。
自分のやりたい操作をひたすら検索していくのも良いですが、やりたいことが明確になればなるほど、探すのが難しくなってしまいます。
最もオススメの方法は、基本的な連携方法を把握できたとは、ライブラリのドキュメントを参照することです。
https://docs.gspread.org/en/latest/
SpreadSheetに接続する
Spread SheetとPythonを接続するための方法や、Dataframeにする方法については、下記の記事に詳しく記載されていますのでご確認ください。

import gspread
import json
#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成
from oauth2client.service_account import ServiceAccountCredentials
#Spread SheetとGoogle Drive APIのトークンを用意
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
json_file = "○○○○○○.json"
#認証情報設定
#ダウンロードしたjsonファイルをクレデンシャルに設定(秘密鍵、Pythonファイルと同じ階層に置けばOKOK)
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scope)
新しいシートを作成する
次は新しいシートを作成していきます。
シートの作成は、「add_worksheet」関数を使うことで可能です。
rows(行)とcol(列)は一応、変数としては必要みたいです。
(実際は関係ないと思うんですけどね。行と列数の制限が発生するわけではないので、テキトーな値でOKです。)
# シートの作成
worksheet.add_worksheet(title="new worksheet", rows='100', cols='30')
セル指定で書き込みをする
セルを指定して書き込みをするのは簡単です。
worksheetは、冒頭で接続したSpreadsheetの(今回は)0番目のシートです。
update_cell関数に対して、引数(行番号,列番号,入力内容)と与えればOKです。
worksheet.update_cell(10,10 'test')
For 文で書き込みを行う
次はFor文を使って書き込みを行っていきます。
len関数でデータフレームの長さを取っていますが、for文の中では、+2としているのがわかると思います。
これは、
Dataframeの数え方が0番からなのに対し、SSは1番から(ここで+1)
SSの1行目はヘッダーなので、1行目はスキップする必要がある(ここで+1)
を合わせて+2としています。
この辺りは対症療法的ではありますが、他のサービスと接続して操作をする以上は、仕方のないことです。(おそらくExcel連携も同じ)
# データフレームの行数をカウント
df_ind_sp = len(df)
# For文開始
for j in range(df_ind_sp):
# "test"という文字列を(i+2)行目、6列目に書き込む
worksheet.update_cell(j + 2, 6, 'test')
結果がこちらです。
しっかり連番で書き込めているのがわかると思います。
For文を作れるようになれば、あとは、表の各要素を引っ張り出してきて、足し合わせたものを”test”の部分に差し替えれば、色々なことが出来るはずです。

まとめ
以上、簡単にですが、PythonとSpreadSheetを連携し、書き込みを行ってみました。
やってみればわかるのですが、実際頭を悩ませるのは、書き込みたい内容をDataFrameに落とし込む作業と、セルを連番で選択するところだと思います。
別のソフトと連携させる作業は、高度に見えますが、どこからどこまでがPythonで、どこからがソフトに対応しないといけないのか、線引きを行ってから、手を動かすようにすれば大丈夫です。