Skip to content

Google Cloud PlatformでPythonを用いてスプレッドシートを操作する方法

行うこと

  • Pythonを用いてスプレッドシートを操作できるように設定します。
    • Google Cloud Platform(GCP)の設定
    • スプレッドシートを作成しGCPとの紐付け
    • Pythonを用いてスプレッドシートのセルの操作

Google Cloud Platform(GCP)の設定

Google Cloud のコンソール画面を開いたらまず最初に新しいプロジェクトを作成します。 ナビゲーションメニューから以下の黄色い枠で囲われた部分をクリックします。



プロジェクト選択・新規作成のウィンドウが表示されるため、新しいプロジェクトをクリックします。



新しいプロジェクト作成ページに遷移するため、プロジェクト名を入力して作成ボタンをクリックします。



プロジェクトができると、ナビゲーションバーの通知からプロジェクトを確認できるため、「プロジェクトを選択」をクリックして、作成したプロジェクトに移動しましょう。



移動すると、対象のプロジェクトのダッシュボードページに遷移します。



Spreadsheet APIとGoogle Drive APIを有効にする。

ハンバーガーメニューをクリックして「APIとサービス」-> 「ライブラリ」を選択します。



以下のライブラリ検索ページが表示されるため、検索ボックスに「spreadsheet」と入力して「Google Sheets API」を表示します。



Google Sheets APIを有効にするため、「有効にする」ボタンをクリックします。



次に、上記と同様にGoogle Drive APIを検索して、有効化します。




「APIとサービス」-> 「有効なAPIとサービス」から有効化されていることを確認することができます。




次にAPIとサービスから「認証情報」-> 「認証情報を作成」->「サービスアカウント」を選択します。


「サービスアカウントの作成」ページに遷移するため、「サービスアカウント名」「サービスアカウントID」を入力し「完了」ボタンを押します。


「このサービスアカウントにプロジェクトへのアクセスを許可する」の「ロール」を「編集者」に設定します。


「ユーザーにこのサービスアカウントへの合うセスを許可」は省略して構いません。 「完了」ボタンを押します。


以下の画面のように「サービスアカウント」の「メール」 にメールアドレスが追加されていることが確認できます。


「メール」の対象のメールアドレスのリンクをクリックすると以下の画面に遷移するため、画面右側の「操作」のメニューから「鍵を管理」を選択します。


以下のキー設定の画面に遷移するため、「鍵を追加」をクリックします。


秘密鍵の作成のためのウィンドウが表示されるためキーのタイプで「JSON」を選択して「作成」ボタンをクリックします。

作成ボタンをクリックすると、.json形式でファイルがダウンロードされます。


キー作成後は同ページでキーが確認できます。

ここまでで、 Google Cloud Platformの設定は終了となります。

スプレッドシートを作成しGCPとの紐付け


“Client_email”の値をコピーします。


対象のスプレッドシートで「共有」ボタンをクリックして、ユーザーを追加するウィンドウを表示し、Client_email”の値をペーストして「完了」ボタンを押すことで追加することができます。

Pythonを用いてスプレッドシートのセルの操作

参考: gspread documentation

今回はpythonでスプレッドシートを操作するため、gspreadと、Oauth認証関連のoauth2clientを使用します。

$ pip install gspread oauth2client

Pythonファイルを作成して以下のようにgspread、oauth2clientのライブラリをインポートします。

import gspread
from google.oauth2.service_account import Credentials

ServiceAccountCredentialsはここではGCPのスプレッドシート、Googleドライブへアクセスできる変数を生成します。 ServiceAccountCredentialsのfrom_json_keyfile_nameメソッドを用いてjsonファイルを変数cに代入し、設定しております。

scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

c = ServiceAccountCredentials.from_json_keyfile_name('対象のjsonファイル', scope)

OAuth2.0の資格情報を使用してGCP SpreadSheet APIにログインします。

gs = gspread.authorize(c)

設定・共有したスプレッドシートキーを変数 SPREADSHEET_KEYに格納します。

SPREADSHEET_KEY = 'スプレッドシートキー'

スプレッドシートキーと紐づいているspreadsheetのワークシート名がstockのシート情報を取得して変数worksheetに格納します。

worksheet = gs.open_by_key(SPREADSHEET_KEY).worksheet("stock")

acellメソッドを用いると引数でセットしたセルの値を文字列(string)で取得できます。

worksheet.acell("A1").value

ラボ内の在庫管理を自動化してみるのプログラムでは、セルの値は文字列(string)で取得されているため、各セルの数値を計算するためにint関数で整数に変換して取得しております。

val_1 = worksheet.acell("B2").value
val1 = int(val_1) + 1

updateメソッドを用いることでセル内の値を更新することができます。

worksheet.update('B2', val1)