Google Sheets API

プログラミング
公開 2025年5月5日 最終更新 2025年9月27日

はじめに

前提条件

  • Google Cloud Platform(GCP)のアカウントを作成済みであること
  • Google ドライブにスプレッドシートを作成済みであること

API を使用するための準備

1API の有効化

GCP のメニューから API とサービス > ライブラリ を選択します。
検索バーで「Google Sheets API」を検索し、これを有効にします(図1)。

図1 Google Sheets API図1 Google Sheets API

2サービスアカウントの作成

GCP のメニューから IAM と管理 > サービスアカウント に移動します。
「サービスアカウントを作成」をクリック(図2)し、アカウント名を入力して作成します。

図2 サービスアカウントを作成図2 サービスアカウントを作成

3キーの作成

作成したサービスアカウントの「鍵」タブの キーを追加 > 新しい鍵を作成 をクリック(図3)し、キーのタイプとして JSON を選択してダウンロードします(図4)。JSON ファイルはプログラムからの API 呼び出しで使用します。この JSON ファイルには、API にアクセスするための認証情報が含まれているため、安全に保管してください。

図3 キーを追加図3 キーを追加

図4 JSON を選択図4 JSON を選択

4スプレッドシートの編集者にサービスアカウントを追加

次は Google ドライブ のスプレッドシートに 2. で作成したサービスアカウントを編集者として追加します。
右上の「共有」ボタンをクリックして、入力欄(図5)にサービスアカウントのメールアドレスを入力します。画面が切り替わる(図6)ので「編集者」が選択されていることを確認して「送信」ボタンをクリックします。

図5 メールアドレスを入力図5 メールアドレスを入力

図6 共有図6 共有

ここまでの手順で API を使用する準備が完了しました。
次では実際にプログラムから API を呼び出してみましょう。

プログラムから API 呼び出し

Python の場合

Google API を扱うためのライブラリをインストールします。

pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib

ダウンロードした認証情報の JSON ファイルを py ファイルと同じディレクトリに置きます。 ファイル名は sheet_credentials.json としました。

import google.auth
import googleapiclient.discovery

CREDENTIALS_FILE = 'sheet_credentials.json'
SPREADSHEET_ID = '1DgV4pYzg19ZyRKEWlGuAFXt_CnsDNSsKnpG5doM9Rjk'

try:
    # 認証情報のロード
    credentials, _ = google.auth.load_credentials_from_file(
        CREDENTIALS_FILE, ['https://www.googleapis.com/auth/spreadsheets']
    )

    # Google Sheets API サービスのビルド
    service = googleapiclient.discovery.build('sheets', 'v4', credentials=credentials)

    # 更新する値を設定
    values = [['こんにちは、Python の世界!']]
    body = {'values': values}

    # API リクエストを実行
    result = (
        service.spreadsheets()
        .values()
        .update(
            spreadsheetId=SPREADSHEET_ID,
            range='シート1!A1',
            valueInputOption='USER_ENTERED',
            body=body,
        )
        .execute()
    )
    print(f'更新されたセルの数: {result.get("updatedCells")}')
except Exception as e:
    print(f'エラーが発生しました: {e}')
  • SPREADSHEET_ID
    スプレッドシートを開いた時のブラウザのアドレス欄から確認できます。 URL の d//edit の間に挟まれた文字列がスプレッドシート ID です。

  • values
    公式ドキュメント 1 にも記載がありますが、行列形式の2次元配列を設定します。

values = [
    [
        # Cell values ...
    ],
    # Additional rows ...
]

プログラムを実行してみると値がセットされていることを確認できます(図7)。 図7 スプレッドシート図7 スプレッドシート

C# の場合

プロジェクトに Google.Apis.Sheets.v4 パッケージをインストールします。

dotnet add package Google.Apis.Sheets.v4

または

Install-Package Google.Apis.Sheets.v4 

Python の場合と同様に、認証情報の JSON ファイルはアプリケーションの実行形式ファイルと同じディレクトリに置きます。ファイル名は sheet_credentials.json です。

using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;

// スプレッドシートID
const string spreadsheetId = "1DgV4pYzg19ZyRKEWlGuAFXt_CnsDNSsKnpG5doM9Rjk";

try
{
    // 認証情報のロード
    using var stream = new FileStream("sheet_credentials.json", FileMode.Open, FileAccess.Read);
    var credential = GoogleCredential.FromStream(stream).CreateScoped(SheetsService.Scope.Spreadsheets);

    // SheetsService を作成
    var service = new SheetsService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
    });

    // 更新する値を作成
    var values = new[] { new[] { "こんにちは、C# の世界!" } };
    var valueRange = new ValueRange { Values = values };

    // 更新リクエストを作成
    var request = service.Spreadsheets.Values.Update(valueRange, spreadsheetId, "シート1!A1");
    request.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

    // リクエストを実行
    var response = request.Execute();
    Console.WriteLine($"更新されたセルの数: {response.UpdatedCells}");
}
catch (Exception ex)
{
    Console.WriteLine($"エラーが発生しました: {ex.Message}");
}

実行結果は以下のようになりました(図8)。

図8 スプレッドシート図8 スプレッドシート

トラブルシューティング

HttpStatusCode is Forbidden

以下のエラーメッセージが表示される場合は、スプレッドシートを編集する権限がないことを表しています。

The service sheets has thrown an exception. HttpStatusCode is Forbidden. The caller does not have permission

考えられる原因は以下です。

  • スプレッドシートの編集者にサービスアカウントが追加されていない
  • 違うサービスアカウントの認証情報ファイルを参照している

Unable to parse range

シート名の指定はスプレッドシートの実際のシート名に合わせる必要があります。

The service sheets has thrown an exception. HttpStatusCode is BadRequest. Unable to parse range: sheet1!A1

まとめ

Google Sheets API を利用することで、スプレッドシートをプログラムから更新する手順を解説しました。API を使用することで、手作業で行っていた業務フローを自動化したり、スプレッドシートをデータベースのように扱えるなど応用範囲が広がります。

API の詳細については参考資料をご覧ください。

参考資料

Google Sheets API Overview