Pythonでスプレッドシートの内容を操作することは、データ管理や自動化の面で非常に便利です。しかし、「Google ConsoleでのAPI設定は複雑ではないか」「プログラミングの経験が少ないけれど、これを行うことは可能か」「スプレッドシートの共有化はどのように行うのか」といった疑問が浮かぶかもしれません。この記事では、これらの疑問に答え、Python初心者でも容易にGoogleスプレッドシートAPIを有効化し、スプレッドシートを共有する方法を解説します。
・Pythonからスプレッドシートを操作したい。
・Google consoleからAPI有効化の方法がわからない。
・初心者でスプレッドシートの共有化方法がわからない。
こんな疑問に答えます。
・Pythonでスプレッドシートを操作したい人
・Google APIを使用してみた人
・スプレッドシートを共有化し、チームで作業をしたいエンジニア
YouTubeで実際の流れを説明しているのでご覧ください。

Googleスプレッドシートとは
スプレッドシートの基本機能
Googleスプレッドシートは、オンラインで利用可能な表計算ツールです。Excelと同様の機能を持ち、データの整理、計算、グラフ作成などが可能です。オンラインでの利用であるため、インターネット接続があればどこからでもアクセスでき、複数のユーザーによるリアルタイムの共同作業が特徴です。
Pythonとスプレッドシートの連携の利点
Pythonを使用してスプレッドシートと連携することには、いくつかの利点があります。まず、大量のデータを効率的に処理できます。Pythonの強力なデータ処理能力を活用して、スプレッドシート内のデータを自動的に分析、整理することが可能です。さらに、データの自動更新や定期的なレポート作成など、繰り返し行う作業を自動化することができます。これにより、時間を節約し、ミスのリスクを減らすことができます。
なぜPythonなのか
Pythonは、その読みやすい構文と強力なライブラリのおかげで、データサイエンスやオートメーションに広く使われています。初心者にも理解しやすく、多くのオンラインリソースが利用可能です。Googleスプレッドシートとの連携にも、gspreadやPandasなどのライブラリが使え、これらを使うことでスプレッドシートのデータを簡単に操作できます。
初心者にも優しい
Pythonとスプレッドシートの組み合わせは、プログラミング初心者にとっても理想的です。簡単なスクリプトから始めて、徐々に複雑なデータ操作に挑戦できます。実際のデータを使ったプロジェクトを通じて、プログラミングの基本的な概念やデータサイエンスのスキルを学ぶことができます。
Google API Consoleの概要
Google API Consoleとは
Google API Consoleは、Google Cloud Platformの一部で、Googleが提供する様々なAPI(Application Programming Interface)へのアクセスを管理するためのツールです。このコンソールを使用して、特定のAPIをプロジェクトにリンクし、必要な認証情報を生成することができます。APIを利用することで、Googleのサービス(例えば、Googleスプレッドシート)とあなたのアプリケーション(この場合はPythonスクリプト)を連携させることが可能になります。
APIサービスの有効化の重要性
APIを有効にすることは、セキュリティとアクセス管理の観点から非常に重要です。各APIには、特定のサービスへのアクセスを許可する役割があります。GoogleスプレッドシートAPIを有効化することで、あなたのPythonアプリケーションがスプレッドシートのデータを安全に読み書きできるようになります。これにより、アプリケーションはGoogleのサーバーと通信し、スプレッドシートのデータを操作することが可能になります。
プロジェクトの作成
Google API Consoleを使用する最初のステップは、新しいプロジェクトの作成です。プロジェクトとは、あなたのアプリケーションとGoogleのサービスを連携させるためのコンテナのようなものです。プロジェクトを作成することで、特定のAPIへのアクセスを管理し、使用するAPIに応じて適切な認証情報を設定できます。
APIキーとOAuth 2.0クライアントID
Google API Consoleでプロジェクトを作成した後、APIキーまたはOAuth 2.0クライアントIDを生成する必要があります。APIキーは、主にパブリックなデータへのアクセスに使用されます。一方、OAuth 2.0クライアントIDは、ユーザーのプライベートデータへのアクセスに必要となります。Googleスプレッドシートの場合、ユーザーの許可を得てプライベートなデータにアクセスするため、OAuth 2.0クライアントIDの生成が必要です。
では実際にスクリーンショットを見ながらやります。まず下記リンクに入りGoogle cloudでプロジェクトを作成します。
Googleスプレッドシートの有効化
では実際に有効化を行います。
Google Drive sheetのAPI有効化
https://console.cloud.google.com/
My Projectと記載されている▼タブをクリックし、新しいプロジェクトを選択し、プロジェクト名称を記載します。

新しいプロジェクト名称を記載し、作成をクリックします。新しいプロジェクトを作成したら、APIとサービスのライブラリから、今回はGoogle Spread sheetと、Google DriveのAPIを有効化します。

ライブラリから、Google Drive APIとGoogle Sheets APIを有効化します。

有効化すると下記のようにAPIが有効ですと記載されます。

APIとサービスをクリックしたときに下記のように、Google Sheets APIとGoogle Drive APIが表示されます。

認証情報の作成
次に認証情報の作成を行います。認証情報を選択し、認証情報を作成をクリックします。採取的に、サービスアカウントにメールアドレスが登録されれば完了です。

認証情報を作成、サービスアカウントを選択します。

サービスアカウントを選択し、サービスアカウント名(例えば、Spread_sheet等)、サービスアカウントIDを入力し、下記のようにメールアドレスが表示されます。作成して続行を選択します。

続行・完了を選択します。

これでサービスアカウントの作成が完了しました。次にサービスアカウントにキーを作成します。下記のように、サービスアカウントのメールアドレスが追加されます。メールアドレスをコピーし、保存しておきます。また、追加されたメールアドレスをクリックします。

キーのタブを選択し、鍵を追加をクリックします。

鍵を追加・新しい鍵を作成を選択し、JSON形式で作成を行います。すると、JSON形式のファイルがダウンロードフォルダに保存されます。このファイルをプログラムのフォルダと同じフォルダに格納します。

これで認証の準備は完了です。次にスプレッドシートの共有化を行います。
スプレッドシートの共有化
スプレッドシートを開き、ファイル名称を設定します。その後、共有を選択します。

共有を選択すると、”ユーザーやグループを追加”と表示されるので、ここに先ほど取得したサービスアカウントのメールアドレスを貼り付け、送信をクリックします。これで、事前準備は完了です。

実際にPythonでスプレッドシートの中身を確認できるかテストをしましょう。
スプレッドシートの共有とPythonへの接続
スプレッドシートの共有設定
GoogleスプレッドシートAPIを使う前に、操作したいスプレッドシートを適切に共有する必要があります。まず、操作したいスプレッドシートを開き、「共有」ボタンをクリックします。次に、APIで使用した認証情報に含まれるクライアントメールアドレスを共有リストに追加します。これにより、あなたのPythonスクリプトがスプレッドシートにアクセスし、操作できるようになります。
PythonでのAPI認証方法
PythonからスプレッドシートAPIにアクセスするには、まずgspreadライブラリを使用して認証プロセスを行います。このためには、先にダウンロードした認証情報ファイル(JSONファイル)をプログラムに読み込ませる必要があります。gspreadライブラリのservice_account
関数を使ってJSONファイルを指定し、認証されたクライアントを生成します。これにより、スプレッドシートへのアクセスと操作が可能になります。
スプレッドシートの操作テスト
認証が完了したら、実際にPythonスクリプトからスプレッドシートにアクセスしてみましょう。gspreadライブラリを使い、スプレッドシートの読み込みやデータの書き込みなどの基本操作をテストします。
実際に下記のコードでテストを行います。
下記を修正すること。
・スプレッドシート名称:Twitter_Arduinofun
・service_accountのfilenameにフォルダに保存した、JSON形式のPATを入れてください。私は、同じディレクトリに保存しました。
import gspread
#ワークブックを選択
wb = gspread.service_account(filename="./Your filename.json")
ws = wb.open("Twitter_Arduinofun")
#セルA1の値を取得
print(ws.sheet1.get("A2"))

下記のようにJSONファイルを同じディレクトリに保存し、実行すると、A2のセルを取得し、1001と表示されています。スプレッドシートの中身を確認できています。

以上で、スプレッドシートの設定は完了になります。これらをふまえて、下記のようにTwitterの自動化ができますので実施してみてください。