どうも、とがみんです。
この記事では、PythonでGoogleスプレッドシートを操作するにあたって、必要な設定方法と、読み書きする方法について紹介していきます。
Contents
今回目指すもの
下の動画は、スプレッドシートから読み取った数に10を掛け、その結果をスプレッドシート に書き込んでいます。
【Python】
PythonでGoogleスプレッドシートの読み書きをする。 pic.twitter.com/m9SAZDTyxP
— Fresopiya@究極の自由を追求するブログ (@fresopiya) March 31, 2019
Googleスプレッドシートを操作するための準備
「Google Cloud Platform」のページを開き、Googleスプレッドシートを操作するための準備を行なっていきます。
新しいプロジェクトの作成
「Google Cloud Platform」のページで新しいプロジェうとを作成します。
プロジェクトの選択を選択し、表示されたモーダル右上の新しいプロジェクトを選択します。
プロジェクト名を入力し、作成ボタンを押します。
GoogleAPIの有効化
PythonからGoogleスプレッドシートを操作するにあたって、「Google Drive」と「Google Sheets」のAPIを有効にします。
ライブラリを選択します。
以下のような画面に遷移するので「Google Drive」と「Google Sheets」を検索して有効化します。
有効化されているかどうかは、ダッシュボードから確認することができます。
認証情報の設定
外部アプリケーションからGoogleスプレッドシートにアクセスするために必要な情報を作成します。
認証情報を選択し、認証情報を作成を選択します。
そして、サービス アカウント キーを選択します。
次に「サービス アカウント キー」を作成するにあたって必要な情報を入力していきます。
役割は全てのリソースに編集アクセス権限が与えられる編集者にしています。
作成すると以下のような画面になり、JSON形式のファイルがPCに保存されます。
これで、認証情報の設定は完了です。
スプレッドシートの権限の設定
次に、Googleスプレッドシートに読み書きが行えるように設定します。
PCに保存されたJSON形式のファイルを開き、client_emailの値をコピーし、以下のユーザー欄に貼り付け、送信ボタンを押します。
これで、Googleスプレッドシートを操作するための準備が完了です。
Pythonで実際に読み書きしてみる
必要なライブラリをインストール
ターミナルを開き「gspread」と「oauth2client」ライブラリをインストールします。
「gspread」はGoogleスプレッドシートを操作するためのライブラリで、
「oauth2client」はGoogleの各種APIへアクセスするためのライブラリです。
$ pip install oauth2client
認証情報の設定とスプレッドシートの取得
認証情報の設定とスプレッドシートの取得までの記事です。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import gspread import json from oauth2client.service_account import ServiceAccountCredentials scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'] #認証情報の設定 credentials = ServiceAccountCredentials.from_json_keyfile_name('ダウンロードしたファイル名.json', scope) #Googleスプレッドシートの取得 gClient = gspread.authorize(credentials) SPREADSHEET_KEY = 'スプレッドシートのキー' worksheet = gClient.open_by_key(SPREADSHEET_KEY).sheet1 |
スプレッドシートのキーとは、スプレッドシートを開いた時のURLの以下のスプレッドシートのキーの部分です。
スプレッドシートの読み込み・加工・書き込み
以下のコードで、スプレッドシート の1列目の情報を読み取ります。
1 2 | #スプレッドシートに記入された1列目のデータの読み込み importData = worksheet.col_values(1) |
以下のコードで、読み込んだデータそれぞれに10をかけています。
1 2 3 4 5 | #読み込んだデータの加工 exportData = [] for data in importData: dataInt = int(data) exportData.append(dataInt*10) |
以下のコードで、加工したデータをスプレッドシートに書き込みます。
1 2 3 4 5 6 7 | #加工したデータをスプレッドシートへ書き込み cellList = worksheet.range(1, 2, len(exportData), 2)#書き込むセルを取得 i = 0 for cell in cellList: cell.value = exportData[i] i += 1 worksheet.update_cells(cellList) |
まとめ
PythonでGoogleスプレッドシートを操作する方法について紹介しました。
参考文献
>【もう迷わない】Pythonでスプレッドシートに読み書きする初期設定まとめ