Python

【Python】CSVデータをスプレッドシートに移してみた

はじめに

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

SeleniumでCSVデータ化した記事

webサイトの情報をCSV化してみた
Seleniumで取得した値をCSVデータ化してみたはじめに 本記事では、Python初心者がSeleniumで画面から取得したデータをCSVデータにするまでを事例をもとにご紹介いたしま...

データをスプレッドシートに移すまでの手順

では、下記の5つの手順で説明していきます。

  1. Google Cloud Platformにて新プロジェクト作成
  2. Google Cloud PlatformにてAPI設定
  3. Google Cloud Platformにて認証情報設定
  4. スプレッドシートの初期設定
  5. データ格納

Google Cloud Platformにて新プロジェクト作成

まずは、APIAPIを利用するためにGoogleCloudPlatform(GCP)で新規プロジェクトを作成していきます。
※サイトURL:https://console.cloud.google.com/

TOP新規プロジェクト作成

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

新規プロジェクト作成_命名

これでプロジェクトの作成完了です。

Google Cloud PlatformにてAPI設定

次にGoogle DriveGoogle SheetsのAPIを有効にします。

ライブラリ追加

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

GoogleDriveライブラリ検索

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

 

GoogleDriveライブラリ有効化

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

GoogleDriveライブラリ有効結果

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

GoogleSheetsライブラリ検索

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

API有効化結果

Google Drive」と「Google Sheets」のAPIが追加されていたらOKです。

認証情報の設定

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

認証情報画面へ

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

認証情報を作成

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

認証情報の入力

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

認証情報の選択肢

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

認証情報作成完了

接続キーを作成

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

アカウントキーの作成

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

アカウントキーの作成_JSONアカウントキーの作成完了

作成されたJSONファイルの「client_email」欄、
もしくは、先ほど作成したサービスアカウントのメールアドレスを参照しておいてください。(同じ情報なのでどちらでも構いません。)

スプレッドシートの初期設定

次に、プログラムからスプレッドシートにCSVデータを吐き出すための初期設定を行っていきます。まずは、シートを新規作成していきましょう。

スプレッドーシートTOP

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

スプレッドシート共有ボタン

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

共有アカウント追加

これでスプレッドシートの設定は完了です!

データ格納

準備が整ったので実際にプログラムを用いて、作成した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データをスプレッドシートに移すまでを事例をもとにご紹介しました。一見、転記しているだけですが、誰でもみやすいツールにデータ移してあげることで誰でもデータを活用できる状態にすることができていることになるので、汎用性はあると思っております。
次はスプレッドシートのデータを活用した事例をご紹介できればと思いますので乞うご期待ください。

ABOUT ME
lusk
EC歴3年、23歳。 通販カート会社に2018年新卒で入社し、エンジニア、プロジェクトマネージャー、新規事業の立ち上げを経験。 仕事を楽しくするためのツール作成や業務改善の仕組みを作ったりしてます。