Google Slides API 自動生成

概要

Python + Google Slides REST API を使い、ネイティブ Google Slides プレゼンテーションをコードから自動生成する。PPTX経由と違いフォント崩れが発生しない。

前提条件

  • 必要なツール: Python 3.x / Antigravity
  • 必要なAPI/認証:
    • Google Cloud Console の「デスクトップアプリ」OAuthクライアント
    • Google Slides API の有効化
  • 必要なライブラリ: google-api-python-client, google-auth, google-auth-oauthlib
  • 認証情報:
    • credentials JSON: C:\Users\umecc\Downloads\client_secret_640671132144-iaptvn045pcsfroc71m9ndu923nec9co.apps.googleusercontent.com.json
    • トークン保存先: ~\.google_slides_token.json(初回認証後に自動保存、以降は認証不要)
  • Google Cloud プロジェクト: n8n project(プロジェクト番号: 640671132144
  • 接続仕様: Google_Slides_API連携仕様

実行手順(プロンプト/コード)

Antigravityへの呼び出しプロンプト

Google Slides API を使って、以下の内容でプレゼンテーションを作成してください。
n8n projectのOAuth認証情報を使い、ネイティブGoogle Slidesとして出力してURLを教えてください。

[スライドの内容をここに記述]

初回セットアップ(済み)

  1. Google Cloud Console でプロジェクト「n8n project」を選択
  2. Google Slides API を有効化
  3. 「認証情報 → OAuthクライアントID → デスクトップアプリ」で作成
  4. credentials JSON をダウンロード
  5. スクリプト実行 → ブラウザでOAuth認証 → トークン自動保存

コード / スクリプト

スクリプト保存先: C:\ai_work\B-space\hospital-sms-proposal\create_google_slides.py

# 基本構成
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
 
SCOPES = ['https://www.googleapis.com/auth/presentations',
          'https://www.googleapis.com/auth/drive']
 
# 認証(初回はブラウザOAuth、以降はトークンでリフレッシュ)
creds = get_credentials()
 
# スライド作成
slides_service = build('slides', 'v1', credentials=creds)
prs = slides_service.presentations().create(
    body={'title': 'プレゼンテーション名'}
).execute()
prs_id = prs['presentationId']
 
# SlideBuilder でテキストボックス・図形・矢印などを配置
sb = SlideBuilder()
sb.create_slide('slide_1')
sb.set_bg('slide_1', rgb(255, 255, 255))
sb.add_textbox('slide_1', inch(1), inch(1), inch(8), inch(1),
    'タイトル', 36, rgb(0,0,0), True)
 
# バッチ送信(500件ずつ分割)
slides_service.presentations().batchUpdate(
    presentationId=prs_id,
    body={'requests': sb.requests}
).execute()
 
url = f'https://docs.google.com/presentation/d/{prs_id}/edit'

主要API操作

操作APIリクエスト
スライド追加createSlide (predefinedLayout: BLANK)
背景色設定updatePageProperties (pageBackgroundFill)
テキストボックスcreateShape (TEXT_BOX) + insertText + updateTextStyle
角丸四角形createShape (ROUND_RECTANGLE) + fillColor
矢印createShape (RIGHT_ARROW)
createShape (ELLIPSE)
テキストスタイルupdateTextStyle (fontFamily, fontSize, foregroundColor, bold)
段落配置updateParagraphStyle (alignment: CENTER/START/END)

座標系

  • 単位: EMU (English Metric Units)
  • 1インチ = 914,400 EMU
  • 1pt = 12,700 EMU
  • ワイドスライド (16:9): 10in × 5.625in

期待される結果

  • Google Slides のURLが出力される
  • フォントは Noto Sans JP でネイティブ表示(崩れなし)
  • Google Drive に自動保存される
  • トークンが ~\.google_slides_token.json に保存され、次回以降は認証不要

注意事項

  • バッチサイズ: API リクエストは500件ずつ分割して送信(上限対策)
  • トークン有効期限: refresh_token は長期有効だが、Google Cloud プロジェクトが「テスト」モードの場合は7日で失効 → 再認証が必要
  • PPTX経由は非推奨: フォント・デザイン崩れが発生するため、必ずこのAPI方式を使うこと

関連リンク

変更履歴

日付変更内容
2026-02-28初版登録。病院SMS提案書の生成で動作確認済み