スプレッドシート自動化

スプレッドシート自動化の第一歩!Pythonで認証&API設定から自動化まで解説

アイキャッチ スプレッドシート自動化 事前設定
ryoma_rakushiyo

このページでは、PythonでGoogleスプレッドシートを自動化するための導入部分を中心に解説します。Pythonでのシートへの簡単な書き込みや読み込みができるようになります。

Googleスプレッドシートは無料で使えて、他の人とリアルタイムで共有できるのが魅力だよね!インターネットさえ繋がっていれば、どのパソコンでも使えるし!

ryomaくん
ryomaくん

ビジネスで使う場面が増えてきているよね!

ただ色んなシートやデータがたくさんあると作業量も多くて大変だね〜

ラクシヨくん
ラクシヨくん

たしかに大変なこともあるね!
いつも同じことをしているならPython自動化がおすすめだよ。

事前準備が必要になるけど、1つずつ一緒にすすめていこう!

ryomaくん
ryomaくん

PythonでGoogleスプレッドシートを自動化するためには、GoogleのAPIを使用してスプレッドシートにアクセスし、データを読み書きすることが必要です。

これらを事前に行う必要があります
  1. Google Cloud Consoleでプロジェクトを作成する
  2. Google Drive APIとGoogle Sheets APIを有効にする
  3. サービスアカウントを作成し、JSONキーファイルをダウンロードする
  4. Googleスプレッドシートにアクセス権を付与する

一度行えば、同じ設定を使い回すこともできます。

1つずつステップバイステップで行っていきましょう。

Google Cloud Platformで事前準備しよう!

Google Cloud Platformにログインする

Google Cloud Platformで検索します。

ログイン画面がでますので、Googleアカウントでログインしましょう。
アカウントがない方は「アカウント作成」してください。

プロジェクトを作成する

Topページより新しいプロジェクトを選択し、プロジェクト名をつけます。

今回はプロジェクト名に「SpreadSheetProject」と入力し、作成を押します。

(プロジェクト名は好きなものでかまいません)

作成したプロジェクトをクリックし開きます。

Google Sheets API を有効にする

先程のプロジェクトが選択されている状態で、左のメニューから「APIとサービス」 > 「ライブラリ」を選択します。

検索窓に「spread」と入力し、Google Sheets API を有効にします。

(「Sheets」と検索したほうが良いかもしれません)

Google Sheets API の有効化完了です!

Google Drive API を有効にする

左のメニューから「APIとサービス」 > 「ライブラリ」を選択します。

「Drive」と検索し、結果からGoogle Drive APIを選択して有効化します。

Google Drive API の有効化完了です!

サービスアカウントを作成する

Q
サービスアカウントとは

「プログラム」がGoogleのAPIやサービスにアクセスするために使用される特別なアカウントです。

これは、通常のユーザーアカウント(人間がログインするアカウント)とは異なり、人ではなくアプリケーションやシステムが主体となって操作を行うためのアカウントです。

サービスアカウントには、xxxx@xxxx.iam.gserviceaccount.com のような専用のメールアドレスが割り当てられます。

このアドレスを使用して、Googleスプレッドシートなどのリソースにアクセス権を付与します。

左のメニューから「APIとサービス」 > 「認証情報」を選択します。

「+認証情報作成」から「サービスアカウント」を選択します。

サービスアカウント名に「SpreadSheet」と入力。作成して続行を押します。

(サービス名はお好きなもので結構です。)

「ロールを選択」> 「基本」> 「編集者」を選択し、続行を押します。

最後に「完了」を押します。サービスアカウントの作成完了です!

サービスアカウントからJSON形式でキーをダウンロードする

サービスアカウントが作成されたことを確認します。

サービスアカウントをクリックします。(赤枠)

「キー」> 「鍵を追加」> 「新しい鍵を作成」 を押します。

キーのタイプをJSONにチェックをつけ、作成を押すとファイルがダウンロードされ完了です!

JSON形式のキーを確認する

ダウンロードフォルダに拡張子が「.json」のファイルがあることを確認します。

Pythonスクリプトで使うから大切に持っておいてね!

使いやすいようにファイル名を変更することも可能です
「spreadsheetproject.json」にしました。

これでGoogle Cloud Platformでの設定は完了です!

お疲れさまでした!

事前にこんな準備が必要なんだね〜!大変だ!

ラクシヨくん
ラクシヨくん

1度行えば同じ設定を使い回すこともできるから頑張ってついてきてね!

次からは実際のスプレッドシートの操作に近づいていくよ!

ryomaくん
ryomaくん

スプレッドシートにアクセス権を付与しよう!

ここからはPythonでスプレッドシートを操作するためのアクセス権を設定します。

先程作成したサービスアカウントをスプレッドシートの共有設定に行います。

権限を設定するフォルダを作成する

Googleドライブで、右クリックで開いたメニューから新しいフォルダを選択します。

今回はフォルダ名を「SpreadSheet_Python」として作成を押します。

ドライブ 新しいフォルダ作成
ドライブ 新しいフォルダ名

フォルダが作成されました!

フォルダにアクセス権限をつける

作成したフォルダに共有設定でアクセス権を設定します。

フォルダの横にある「共有」マークをクリックしてください。(赤枠参照)

もしくはフォルダを右クリックし、共有からも行えます。

共有者を入力する画面がでますので、「サービスアカウント」を追加します。

xxxx@xxxx.iam.gserviceaccount.com のような専用のメールアドレスを入力します。

Q
専用メールアドレスの確認方法

JSONファイルの中にあるclient_emailの値をコピーします。

「”client_email”: “xxxx@xxxx.iam.gserviceaccount.com“」
このようなものが書かれているので、client_emailを目印にアンダーラインの部分をコピーしてね!

JSONファイルってなんだっけ?という方はこちら

サービスアカウントメールアドレスを入力

入力すると上記のように表示がかわるので、送信を押して追加完了です!

共有マークから共有設定を再度ひらくと、ユーザーアカウントの他に先ほどのサービスアカウントが追加されていますね!

フォルダの中にスプレッドシートを作成する

フォルダの中にスプレッドシートを追加します。

フォルダにはアクセス権を付与しているので、その中のものには権限が自動で加えられます

フォルダの中にいることを確認し、右クリックからスプレッドシートを追加します

フォルダと同じユーザーに権限が与えられます。

作成したスプレッドシートは「SpreadSheet_test_file」にしておきましょう!

(ファイル名はお好みでよいです)

スプレッドシートに権限がついているか確認します。

サービスアカウントの権限がついていますね!


これで事前設定は完了となります!

お疲れ様でした!

あとはPythonで操作できれば自動化の道はみえてくるよ!

サンプルコードを試して、ぜひ実感してね!

ryomaくん
ryomaくん

Pythonでスプレッドシートを操作しよう!

ライブラリをインストールする

GoogleスプレッドシートをPythonから操作するためにgspreadをインストールします。

コマンドプロンプト(Windows)またはターミナル(Mac)を開き、pipコマンドを入力して実行します。

Macの場合
pip3 isntall gspread
Zsh
Windowsの場合
pip isntall gspread
Zsh

インストールが完了すると、gspreadが使えるようになります。

Q
インストールされているか不安な場合は(確認方法)

コマンドプロンプト(Windows)またはターミナル(Mac)にてpip showコマンドでgspreadを指定します。

Macの場合
pip3 show gspread
Zsh
Windowsの場合
pip show gspread
Zsh

コマンドを実行した結果、以下のような例になっていればインストールができています。

この例では「Version」の行にインストールされているgspreadのバージョンが表示されています。

ryoma@R-Mac % pip3 show gspread
Name: gspread
Version: 6.1.3
Summary: Google Spreadsheets Python API
...(省略)
Zsh

サンプルコードをコピーする

名前で指定したGoogleスプレッドシートを操作します。

1つ目のシートのA1セルを開始位置として文字を書き込みするコードです。

下記をコピーしてください。(右上のマークをクリックするとコピーできます。)

import gspread
from google.oauth2.service_account import Credentials

# 認証のスコープを設定
SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']

# 認証情報をサービスアカウントのJSONファイルから作成
json_path = 'spreadsheetproject.json'
creds = Credentials.from_service_account_file(json_path, scopes=SCOPES)

# gspread を使って認証
gc = gspread.authorize(creds)

# スプレッドシートにアクセス
spreadsheet_name = 'SpreadSheet_test_file'
spreadsheet = gc.open(spreadsheet_name)
worksheet = spreadsheet.sheet1

# データ取得と書き込み
data = worksheet.get_all_values()
print(data)
worksheet.update([['Hello, World!'], ['SpredSheetFirstStep']], 'A1')
Python

コードを貼り付ける

Visual Studio Codeなどの実行環境にコピーしたサンプルコードを貼り付けましょう。

サービスアカウントファイルとスプレッドシート名を自分の環境に合わせる

貼り付けしたサンプルコードの変数「json_path」と変数「spreadsheet_name」への代入を書きかえます。
「’ ‘」で囲われている部分を書きかえてください。

手順通りの名前ですすめてくれていれば変更は不要です。

サンプルコードのハイライト部分を

...(省略)

# 認証情報をサービスアカウントのJSONファイルから作成
json_path = 'spreadsheetproject.json'
creds = Credentials.from_service_account_file(json_path, scopes=SCOPES)

# gspread を使って認証
gc = gspread.authorize(creds)

# スプレッドシートにアクセス
spreadsheet_name = 'SpreadSheet_test_file'
spreadsheet = gc.open(spreadsheet_name)

...(省略)
Python

例えばこのように書きかえます。

...(省略)

# 認証情報をサービスアカウントのJSONファイルから作成
json_path = '/Users/ryoma/Downloads/spreadsheetproject.json'
creds = Credentials.from_service_account_file(json_path, scopes=SCOPES)

# gspread を使って認証
gc = gspread.authorize(creds)

# スプレッドシートにアクセス
spreadsheet_name = '作成したスプレッドシートのファイル名'
spreadsheet = gc.open(spreadsheet_name)

...(省略)
Python

特にjson_pathに代入する部分はフルパスを指定すると良いかもしれません。

(絶対パス、相対パスの違いがわからない場合)

変更前のサンプルコードではpythonコードと同じディレクトリにspreadsheetproject.jsonを移動させているので相対パスで指定しています。

準備完了、実行する

スプレッドシートの「1つ目のシート」にA1セルを開始として、

  • 「Hello, World!」
  • 「SpredSheetFirstStep」

という文字が書き込まれます。

もう一度実行すると1つ目のシートの内容を読み込んで、内容をCmdやTerminalに表示します。

そちらも確認ください。

    なんとかできたよ〜!

    動いたけど、理解はしていないかも、、

    ラクシヨくん
    ラクシヨくん

    今回は手順どおり進めて動くだけでじゅうぶん!

    コードの解説は今後紹介していくね!

    ryomaくん
    ryomaくん

    まとめ

    Pythonを使用したGoogleスプレッドシートの自動化について、事前設定を中心に解説しました。

    行ったこと
    1. Google Cloud Consoleでプロジェクトを作成する
    2. Google Drive APIとGoogle Sheets APIを有効にする
    3. サービスアカウントを作成し、JSONキーファイルをダウンロードする
    4. Googleスプレッドシートにアクセス権を付与する

    これからPythonを使ってGoogleスプレッドシートを効率的に操作できるようになると、データ管理や自動化が大幅に楽になります。

    ぜひ試してみてください!

    ABOUT ME
    ryoma|ラクシヨ
    ryoma|ラクシヨ
    ブロガー / プログラミング
    「楽をしよう」をモットーに、日々の生活や仕事を効率化し、シンプルにすることを目指しています。

  • 複雑なことは小分けにしてシンプルにし「ラクシヨ」
  • 毎日の繰り返しは仕組み化し「ラクシヨ」
  • 苦手なことは得意な人に任せて「ラクシヨ」
  • Tツールを活用して「ラクシヨ」
  • 未来を見据えて判断や方向性を間違えないようにして今後の未来を「ラクシヨ」

    努力も大切ですが、判断や方向性を間違えないようにして、自分が大切なことにもっと時間をかけたいと思っています。そのためにも一緒に「楽をしよう」。

    このブログでは、私の経験や知識をシェアし、皆さんが少しでも「楽」をできるような情報を提供していきます。どうぞよろしくお願いします。

    経歴:
    会計事務所に10年勤務。法人、個人事業主合わせて約100社を担当、サポート。
    業界特有のアナログな環境の中で、作業に追われる日々から抜け出そうと、独学でITスキルを磨き続けました。 現在はExcelを得意とし、RPAの作成やPythonを駆使して業務を効率化するスキルを身につけ、会社全体で5,000時間の作業時間短縮に貢献。
  • 記事URLをコピーしました