Google Workspace CLI セットアップ記録

インストール済みツール

ツールバージョン場所用途
gws0.8.0npm global (@googleworkspace/cli)AI連携・構造化出力
gogv0.11.0C:\ai_work\gogcli\gog.exe (PATH追加済み)日常操作・スクリプト

認証情報

項目
アカウントumebiz5726@gmail.com
GCPプロジェクトgen-lang-client-0383713206
client_secretC:\Users\umecc\.config\gws\client_secret.json
gws credentialsC:\Users\umecc\.config\gws\credentials.enc (AES-256-GCM暗号化)
gog credentialsC:\Users\umecc\AppData\Roaming\gogcli\credentials.json

認証済みスコープ(gws: 11個)

  • Drive, Sheets, Gmail, Calendar, Docs, Presentations, Tasks, PubSub, Cloud Platform, UserInfo, OpenID

使用例

# gws: Google Driveファイル一覧
gws drive files list --params '{ "pageSize": 5 }'
 
# gws: Gmailの未読メール
gws gmail users messages list --params '{ "userId": "me", "q": "is:unread" }'
 
# gog: カレンダー一覧
gog calendar list
 
# gog: 未読メール検索
gog gmail search "is:unread"

Sheets API 書き込み実装

PowerShellの注意点

WARNING

gws CLI でJSON内に # 記号が含まれると、PowerShellがコメントとして解釈しコマンドが失敗する。 日本語のJSON送信もエスケープ問題が発生しやすい。

推奨方法:Python + google-api-python-client を使用

Python実装パターン

# 1. 初回のみOAuth認証(ブラウザが自動で開く)
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
 
CLIENT_SECRET = r"C:\Users\umecc\.config\gws\client_secret.json"
TOKEN_FILE = r"C:\Users\umecc\.config\gws\sheets_token.json"
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
 
# 2. トークン取得(2回目以降は自動)
creds = Credentials.from_authorized_user_file(TOKEN_FILE, SCOPES)
if not creds.valid:
    creds.refresh(Request())
 
# 3. スプレッドシート作成
service = build("sheets", "v4", credentials=creds)
result = service.spreadsheets().create(body={
    "properties": {"title": "タイトル"}
}).execute()
spreadsheet_id = result["spreadsheetId"]
 
# 4. データ書き込み
service.spreadsheets().values().update(
    spreadsheetId=spreadsheet_id,
    range="A1:C3",
    valueInputOption="RAW",
    body={"values": [["col1", "col2", "col3"], ["a", "b", "c"]]}
).execute()
 
# 5. データ追記(既存データの下に追加)
service.spreadsheets().values().append(
    spreadsheetId=spreadsheet_id,
    range="A1:C1",
    valueInputOption="RAW",
    insertDataOption="INSERT_ROWS",
    body={"values": [["new1", "new2", "new3"]]}
).execute()

トークン管理

ファイル用途
client_secret.jsonOAuth クライアント設定(不変)
credentials.encgwsの暗号化クレデンシャル
sheets_token.jsonPython用Sheetsアクセストークン(自動更新)

依存パッケージ

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

gws CLIでの操作(PowerShell)

# スプレッドシート新規作成
gws sheets spreadsheets create --json '{ \"properties\": { \"title\": \"タイトル\" } }'
 
# Driveファイル一覧
gws drive files list --params '{ \"pageSize\": 5 }'
 
# gog での操作
gog calendar list
gog gmail search "is:unread"

関連リンク