PythonでSpread Sheetを連携-SpreadSheetに書き込みを行う

Python

皆さん、こんにちは

この記事では、SpreadSheetに対して、色々と書き込みを行っていきます。

最後にはfor文を使って、連続で書き込む方法も記載しているので、SpreadSheetの自動化のきっかけにしてください!

【ココナラ】Pythonの 質問対応をした結果 稼ぎながら技術力を 高めるためには

ココナラでPythonの質問対応をした結果…稼ぎながら技術力を高めるためには

SpreadSheetのドキュメントを確認する

私のブログを含め、様々なサイトでSpreadSheetの操作方法がまとまっているかと思います。

自分のやりたい操作をひたすら検索していくのも良いですが、やりたいことが明確になればなるほど、探すのが難しくなってしまいます。

最もオススメの方法は、基本的な連携方法を把握できたとは、ライブラリのドキュメントを参照することです。

https://docs.gspread.org/en/latest/

SpreadSheetに接続する

私の記事では、後処理のことを考えて、Spread SheetをDataframe形式で読み込むことを推奨しています。
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で、どこからがソフトに対応しないといけないのか、線引きを行ってから、手を動かすようにすれば大丈夫です。