• #gogcli
  • #google-sheets
  • #google-workspace
  • #cli
  • #automation
開発未分類メモ

gogcliでGoogle Sheetsを操作する:CLIからスプレッドシートの作成・読み書きが全部できる

これは何がすごいのか

Google Workspace CLIツール「gogcli」を使うと、スプレッドシートの作成・データ書き込み・読み取り・数式取得までターミナルから全部できる。つまり:

  • スプレッドシートをデータソースにしたWebアプリの自動生成ができる
  • ExcelファイルもDriveでスプレッドシート形式に変換すればCLIから操作可能
  • Claude Codeと組み合わせれば、スプレッドシートの内容を読み取りコードに変換するパイプラインが作れる

実際にやったこと

1. スプレッドシートの新規作成

gog sheets create "gogcli テスト" --sheets "データ,サマリー"

タイトルとシート名を指定するだけで作成できる。--json フラグをつけるとスプレッドシートIDやURLがJSON形式で返ってくる。

2. データの書き込み

gog sheets update "<spreadsheetId>" "データ!A1:D5" \
  --values-json '[["月","売上","経費","利益"],["1月","1000000","600000","400000"],["2月","1200000","650000","550000"],["3月","1100000","620000","480000"],["4月","1300000","700000","600000"]]'

値は --values-json で2次元配列として渡すのが確実。パイプ区切り(セル)とカンマ区切り(行)でも渡せるが、JSON形式の方が間違いにくい。

3. 数式の書き込み

gog sheets update "<spreadsheetId>" "データ!E1:E5" \
  --values-json '[["合計"],["=B2+C2"],["=B3+C3"],["=B4+C4"],["=B5+C5"]]' \
  --input USER_ENTERED

--input USER_ENTERED を指定すると、=B2+C2 のような文字列を数式として解釈してくれる。

CLIから作成したスプレッドシート

4. データの読み取り(3つのモード)

# 表示値(デフォルト)
gog sheets get "<spreadsheetId>" "データ!A1:E5"

# 数式として取得
gog sheets get "<spreadsheetId>" "データ!A1:E5" --render FORMULA

# 書式なしの生の値
gog sheets get "<spreadsheetId>" "データ!A1:E5" --render UNFORMATTED_VALUE
モード用途E2セルの出力例
FORMATTED_VALUE表示用1600000
FORMULA数式の構造を知りたいとき=B2+C2
UNFORMATTED_VALUEプログラムで使う生データ1600000

5. メタデータの取得

gog sheets metadata "<spreadsheetId>"

シート名、行数、列数、ロケール、タイムゾーンなどスプレッドシートの構造情報が取得できる。プログラムでシート一覧を動的に処理したいときに使う。

6. ハマったポイント:appendの挙動

最初 append でヘッダー行を書こうとしたら、カンマ区切りの値が横ではなく縦に入った。

# これだとA1〜A4に縦に入る
gog sheets append "<spreadsheetId>" "データ!A1:D1" "月,売上,経費,利益"

append のカンマはセル区切りではなく行区切りとして扱われる。横方向にデータを入れたい場合は update --values-json を使う。

コマンド一覧

gog sheets create <title>           # 新規作成
gog sheets get <id> <range>         # 値の取得
gog sheets update <id> <range>      # 値の更新
gog sheets append <id> <range>      # 値の追加
gog sheets clear <id> <range>       # 値のクリア
gog sheets format <id> <range>      # 書式設定
gog sheets metadata <id>            # メタデータ取得
gog sheets copy <id> <title>        # コピー
gog sheets export <id>              # エクスポート(pdf/xlsx/csv)

全コマンドで --json フラグが使える。スクリプトやパイプラインに組み込むとき便利。

注意点まとめ

項目内容
値の書き込み--values-json でJSON 2次元配列が確実
数式の書き込み--input USER_ENTERED が必要
appendのカンマ行区切りとして扱われる。横方向なら update を使う
全コマンド共通--json でJSON出力、--plain でTSV出力

活用の可能性

  1. スプレッドシート → Webアプリ変換: 数式と値を読み取り、Vue/Reactコンポーネントを自動生成
  2. 定期レポートの自動化: CLIからデータを書き込み、スプレッドシートの数式で集計
  3. Excelファイルの一括処理: DriveにアップロードしてSheets形式に変換すればCLIから操作可能
  4. データパイプライン: 外部データ → gogcliでSheets書き込み → Sheets数式で加工 → gogcliで結果取得 → アプリに反映
  5. スプレッドシート分析: Claude Codeがデータを取得し、分析・レポート生成まで自動化
  6. 既存Excelの移行: ExcelをDriveにアップロード → Sheets変換 → get --render FORMULA で数式構造を把握 → Webアプリに再実装