【初心者向け】Googleスプレッドシートを自動操作する方法!〜サービスアカウント設定をわかりやすく解説〜

Google

今回は、PythonやNode.jsなどのプログラムからGoogleスプレッドシートを操作するために必要な準備について、初心者の方にもわかりやすくまとめてみました。

実際に、この記事の手順を進めると、こんな感じでスプレッドシートを自動で書き換えるプログラムが作れるようになります!

Google Cloud Platform (GCP) にアクセスしよう

まずは、Google Cloud Platform(通称GCP)にアクセスします。

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...

ここで、APIの設定や認証情報の作成ができます。

プロジェクトを新しく作成しよう

続いて、スプレッドシート操作専用の「プロジェクト」を作ります。

  • ダッシュボード左上の「▼プロジェクト選択」ボタンをクリック
  • 「新しいプロジェクト」を選択
  • 好きなプロジェクト名(例:「スプレッドシート操作プロジェクト」など)を入力して、「作成」を押します。

作成したら、忘れずにそのプロジェクトを「選択」してくださいね!

「新しいプロジェクト」を選択し、プロジェクトを作成します。

任意のプロジェクト名を入力して作成ボタンを押します。

新規で作成したプロジェクトを選択します。

必要なAPIを有効化しよう

スプレッドシートを操作するには、次の2つのAPIを有効にする必要があります。

Google Drive API を有効化

  • 左メニューの「ライブラリ」を開きます。
  • 「Google Drive API」と検索。
  • 出てきた「Google Drive API」をクリックして「有効にする」を押します。

検索入力部分に「Google Drive API」と入力します。

検索結果に出てきた「Google Drive API」を選択します。

「有効にする」を選択します。

Google Sheets API を有効化

同じ手順で、「Google Sheets API」も有効化します!

注意:
両方ちゃんと有効化しないと、あとでプログラムからエラーになるので注意しましょう!

検索入力部分に「google sheets api」と入力します。
検索結果に出てきた「Google Sheets API」を選択します。

「有効にする」を選択します。

サービスアカウントを作成しよう

ここからいよいよ、プログラムが使う認証情報(jsonファイル)を作成していきます。

  • 左メニュー「認証情報」を開く
  • 「認証情報を作成」→「サービスアカウント」を選びます
  • 好きなサービスアカウント名(例:「spreadsheet-automation」など)を入力して「作成して続行」

次にロールを選ぶ画面が出てくるので、

  • 「基本」→「編集者」

を選びます。

最後に「続行」「完了」を押して、サービスアカウントが作成できました!

「認証情報を作成」を選択します。

「サービスアカウント」を選択します。

任意のサービスアカウント名を入力して、「作成して続行」を選択します。

ロールを「基本」→「編集者」を選択します。

「続行」を選択、最後に「完了」を選択します。

認証情報(jsonファイル)をダウンロードしよう

あと一息です!

  • 作成したサービスアカウントをクリック
  • 「鍵」タブを開きます
  • 「キーを追加」→「新しいキーを作成」
  • 「JSON」を選択して「作成」

これで、PCに認証情報のjsonファイルがダウンロードされました!

このファイルはとても重要なので、絶対に失くさないように大事に保管してくださいね。
(GitHubとかにうっかりアップしないよう注意⚠️)

「鍵」を選択します。

「キーを追加」→「新しい鍵を作成」を選択します。

「JSON」→「作成」を選択します。

JsonファイルがPCにダウンロードされます。

このJsonファイルを使用してプログラムからスプレッドシートの操作が可能になります。

スプレッドシートをサービスアカウントと共有しよう!

作成したサービスアカウントにスプレッドシートへのアクセス権限を付与する必要があります。

サービスアカウントのメールアドレスをコピー!

「認証情報」から、該当アカウントを開きます。

そこで表示されている、xxxxx@project-id.iam.gserviceaccount.com のような形式のメールアドレスをコピーしましょう。

スプレッドシートを開いて「共有」ボタンをクリック!

次に、共有したいスプレッドシートをブラウザで開きます。

右上にある「共有」ボタンをクリックして、
「ユーザーやグループを追加」の入力欄に、先ほどコピーしたメールアドレスを貼り付けましょう。

権限は「編集者」に設定して、「送信」をクリックすればOKです!

💡これで、サービスアカウントがそのスプレッドシートを操作できるようになります!

スプレッドシートキーを取得しよう!

次に、プログラムからスプレッドシートを特定するために必要な「スプレッドシートキー」を取得します。

やり方はとっても簡単。

スプレッドシートのURLを見てください。

たとえば、以下のようなURLだったとします:

https://docs.google.com/spreadsheets/d/1_j3s1JKPyFcWrwRfM2BbBKnjz6weGod7ObNXM4SiMHE/edit#gid=0

このURLのうち、/d//edit の間にある部分が スプレッドシートキー です!

docs.google.com/spreadsheets/d/1_j3s1JKPyFcWrwRfM2BbBKnjz6weGod7ObNXM4SiMHE/edit?gid=0#gid=0

実際にプログラムからスプレッドシートを操作してみよう!

ここまでできたら、あとはプログラム側からこのjsonファイルを使って認証するだけです!

簡単なPythonコード例をもう一度載せておきます。

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name('ダウンロードしたjsonファイル名.json', scope)
client = gspread.authorize(creds)

sheet = client.open('操作したいスプレッドシート名').sheet1
sheet.update_cell(1, 1, "自動で書き込みできた!")

Node.jsでやる場合は、googleapisライブラリを使えば似たような感じで操作できます。

まとめ:最初は面倒でも、慣れれば超便利!

最初に設定が多くてちょっとめんどくさいかもしれませんが、
これができると「手作業でコピペしてたあの作業」が一気に自動化できます!

特に、定期的なレポート作成や、ECサイトの在庫管理など、
毎日似たような作業をしている人にはめちゃくちゃ効果的です。

ぜひチャレンジしてみてくださいね!

参考リンク

コメント