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を用いてスプレッドシートのセルの操作¶
今回は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)