はじめに
本記事では、Pythonを用いてCSVデータをスプレッドシートに移す方法をご紹介いたします。
別記事でSeleniumを利用してCSV化したデータがありますので、そちらを活用してスプレッドシートに移していきます!
SeleniumでCSVデータ化した記事

データをスプレッドシートに移すまでの手順
では、下記の5つの手順で説明していきます。
- Google Cloud Platformにて新プロジェクト作成
- Google Cloud PlatformにてAPI設定
- Google Cloud Platformにて認証情報設定
- スプレッドシートの初期設定
- データ格納
Google Cloud Platformにて新プロジェクト作成
まずは、APIAPIを利用するためにGoogleCloudPlatform(GCP)で新規プロジェクトを作成していきます。
※サイトURL:https://console.cloud.google.com/


名前は適当で構いません。(「spreadsheet-sample」にしました。)

これでプロジェクトの作成完了です。
Google Cloud PlatformにてAPI設定
次にGoogle DriveとGoogle SheetsのAPIを有効にします。

まずは、GoogleDriveを有効化していきましょう。
「google drive api」と検索すれば、該当のAPIがヒットします。

「有効にする」ボタンをクリックして、有効化しましょう。

以下の画面に遷移したら、有効化完了です!

次に、Google Sheetsを有効化していきます。
検索画面にて「Sheets」と入力すれば、ヒットすると思います。

先ほどと同様に有効化してください。

「Google Drive」と「Google Sheets」のAPIが追加されていたらOKです。
認証情報の設定
次に、プログラムからスプレッドシートにサクセスするための認証情報を設定していきます。
「認証情報」のタブをクリックして設定画面にアクセスしましょう。

上部にある「認証情報を作成」からサービスアカウントを作成していきます。

サービスアカウント名は適当で構いません。
今回は「python-spreadsheet」という名前で作成しました。

アクセス権限設定は任意項目ですが、今回は、「編集者」としておきます。
選択後、完了ボタンをクリックして作成を完了してください。

サービスアカウントの1行追加されていたら作成完了しています。
次にその作成されたアカウントのキーを作成していくので、
メールアドレスをクリックしてください。

接続キーを作成
遷移した画面の「キー」というタブをクリックし、「鍵を追加」をクリックし、
鍵を作成していきます。

「JSON」タイプを選択して作成します。


作成されたJSONファイルの「client_email」欄、
もしくは、先ほど作成したサービスアカウントのメールアドレスを参照しておいてください。(同じ情報なのでどちらでも構いません。)
スプレッドシートの初期設定
次に、プログラムからスプレッドシートにCSVデータを吐き出すための初期設定を行っていきます。まずは、シートを新規作成していきましょう。

共有ボタンから編集者を追加していきます。

先ほど、控えておいたメールアドレスをコピペして編集者権限で共有します。

これでスプレッドシートの設定は完了です!
データ格納
準備が整ったので実際にプログラムを用いて、作成したCSVデータをスプレッドシートに移してきます。
動作検証環境
今回の動作検証環境は以下の通りです。
作業エディタ:VSCode
OS:MacOS 11.5
Pythonバージョン:Python3.9.5
ライブラリインポート
pip install gspread
pip install oauth2client
pip install pandas
サンプルコード
スプレッドシート名:python_csvdata_output
シート名 :golf_list
CSVファイル名 :golf.csv
Jsonファイル名 :XXXX.json ※キーを作成した際のJsonファイルです
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
# 設定
json_file = 'python-spreadsheetXXXXXXXXXXXX.json'
file_name = 'python_csvdata_output'
sheet_name1 = 'golf_list'
csv_file_name = 'golf.csv'
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
# スプレッドシートにアクセス
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scope)
gc = gspread.authorize(credentials)
sh = gc.open(file_name)
sheet_list = [ws.title for ws in sh.worksheets()]
print(sheet_list)
# シートの選択 シートの番号でも名前でもよい
wks = sh.worksheet(sheet_name1)
# シートデータクリア
sh.values_clear(f"{sheet_name1}!A1:F500")
# pandas書き込み
df = pd.read_csv(csv_file_name).fillna('')
# 列名とデータを連結して書き込み
wks.update([df.columns.values.tolist()] + df.values.tolist())
# pandas
wks = sh.worksheet(sheet_name1)
df = pd.DataFrame(wks.get_all_records())
print(df)
CSV、Jsonファイルの参照がうまくいかないとエラーになります。
実行するディレクトリに各ファイルを配置するか、絶対パスで指定するようにしてください。
動作確認
実行後の対象のスプレッドシートを確認してみましょう。
CSVデータが綺麗に移っているはずです!

参考サイト
まとめ
本記事では、Python初心者がCSVデータをスプレッドシートに移すまでを事例をもとにご紹介しました。一見、転記しているだけですが、誰でもみやすいツールにデータ移してあげることで誰でもデータを活用できる状態にすることができていることになるので、汎用性はあると思っております。
次はスプレッドシートのデータを活用した事例をご紹介できればと思いますので乞うご期待ください。