AppSheetの業務アプリは裏側でGoogleスプレッドシートをデータベースとして使います。Claude CodeからGoogle Workspace公式CLI「gws」を使い、テーブル設計からスプレッドシート作成・ヘッダー投入・検証までをコマンドで組み立てる実践的な手順を解説します。
結論:AppSheetは「データベースを直接構築するAPI」を持っていません。AppSheetの業務アプリは裏側でGoogleスプレッドシートをデータソースとして使う仕組みなので、土台となるスプレッドシートさえ正しく作っておけば、AppSheet側は最後にそれを読み込むだけで済みます。Claude CodeからGoogle Workspace公式CLIのgwsコマンドを使えば、テーブル設計をコマンドでそのままスプレッドシートに反映でき、シート追加・ヘッダー行・サンプルデータの投入までブラウザ操作なしで完結します。手作業でシートを組むより速く、列のズレや入力ミスも起きにくいのが利点です。
AppSheetで業務アプリを作るとき、最初につまずきやすいのは「アプリの中身」より前段階、土台となるGoogleスプレッドシートの設計です。担当者マスタ、拠点マスタ、記録用のトランザクションシートといった複数のシートを、列名・型・IDの振り方まで揃えて手作業で作っていくと、次のような問題が起きがちです。
シートごとに列の並びや命名がバラバラになり、あとからAppSheet側でカラムの対応付けをやり直す羽目になる
マスタとトランザクションの主キー・外部キーの対応関係を、画面を目視しながら手入力するため時間がかかる
設計を変更するたびに複数シートを開き直して手直しする必要があり、直すたびに入力ミスのリスクが積み上がる
こうした手戻りを減らすために有効なのが、テーブル設計そのものをClaude Codeと一緒に固めたうえで、Google Workspace公式CLIのgwsコマンドでスプレッドシートを組み立ててしまうやり方です。
gwsは、googleworkspace/cliとして公開されているGoogle Workspace公式のコマンドラインツールです。npmで配布されており、次のようにインストールします。
npm install -g @googleworkspace/cli
gws auth logingws auth loginを実行すると認証情報が~/.config/gws/credentials.jsonに保存され、以降はこの資格情報でSheets・Drive・Gmailなど各種Google Workspace APIを呼び出せるようになります。コマンドの基本形は次の通りです。
gws <service> <resource> [sub-resource] <method> [flags]スプレッドシートを扱うsheetsのほか、drive(ファイル・フォルダ管理)、docs、gmail、calendarなど幅広いサービスに対応していますが、AppSheetそのものはgwsのサービス一覧に含まれていません。そのため実務では「AppSheetの母体になるスプレッドシート側をgwsで作り込み、AppSheet側は最後にそれを読み込むだけにする」という役割分担が現実的なやり方になります。
各APIメソッドが要求するJSONの形は、覚えるよりgws schemaで毎回確認するのが確実です。
gws schema sheets.spreadsheets.createステップ1:Claude Codeとテーブル設計(マスタ・トランザクションの構成、列名・型・主キー)を先に固める
ステップ2:gws sheets spreadsheets createでスプレッドシート本体とシート(タブ)を作る
ステップ3:gws sheets spreadsheets values batchUpdateで各シートのヘッダー行・サンプルデータを一括投入する
ステップ4:gws sheets spreadsheets values getで書き込み結果を検証する
ステップ5:AppSheetエディタ(ブラウザ)でこのスプレッドシートをデータソースとして接続する
例えば「担当者が複数の拠点を回って作業記録を残す」という、巡回・記録系の業務アプリでよくあるパターンで考えてみます。担当者マスタ・拠点マスタ・種類マスタのような「マスタ」と、実際の作業を記録する「記録(トランザクション)」を分けて正規化しておくのが基本です。
担当者マスタ:id, 氏名, 連絡先
拠点マスタ:id, 拠点名, 住所
種類マスタ:id, 種類名
記録(トランザクション):id, 日付, 担当者ID, 拠点ID, 種類ID, 数量・メモ
この設計をスプレッドシートに落とし込む前に、Claude Codeに業務の流れを日本語で伝え、テーブル定義(シート名・列名・型・どれが主キーでどれが外部キーか)をいったんMarkdownの設計メモとして書き出させておくと、次のステップで作るJSONの精度が上がります。ここを飛ばしていきなりコマンドを打ち始めると、あとで列の追加・並べ替えが発生し、AppSheet側のカラム対応も含めて手戻りが増えます。
設計が固まったら、スプレッドシート本体と必要なシート(タブ)を1コマンドで作成します。
gws sheets spreadsheets create --json '{
"properties": { "title": "現場管理DB" },
"sheets": [
{ "properties": { "title": "担当者" } },
{ "properties": { "title": "拠点" } },
{ "properties": { "title": "種類" } },
{ "properties": { "title": "記録" } }
]
}'実行結果のJSONに含まれるspreadsheetIdが、以降のすべてのコマンドで使うキーになります。Claude Codeに実行させる場合は、このIDをその場で変数やメモファイルに控えさせておくと、後続のコマンドに渡し忘れずに済みます。あとからシートを追加したい場合は、valuesではなく構造変更用のgws sheets spreadsheets batchUpdateにaddSheetリクエストを渡します。
シートの箱ができたら、各シートの1行目にヘッダー(列名)を、必要なら数行のサンプルデータを一括で書き込みます。valuesを書き込む場合、対象のspreadsheetIdは--paramsで、書き込む値の中身は--jsonで渡すのがgwsの作法です。
gws sheets spreadsheets values batchUpdate \
--params '{"spreadsheetId": "<先の手順で控えたID>"}' \
--json '{
"valueInputOption": "USER_ENTERED",
"data": [
{ "range": "担当者!A1:C1", "values": [["id", "氏名", "連絡先"]] },
{ "range": "拠点!A1:C1", "values": [["id", "拠点名", "住所"]] },
{ "range": "種類!A1:B1", "values": [["id", "種類名"]] },
{ "range": "記録!A1:F1", "values": [["id", "日付", "担当者ID", "拠点ID", "種類ID", "数量"]] }
]
}'複数シートのヘッダーをまとめて1回のコマンドで流し込めるのがbatchUpdateの利点です。設計メモの列名をそのままJSONのvaluesに転記するだけなので、Claude Codeに「ステップ1の設計メモをこのJSON形式に変換して」と依頼すれば、手打ちよりずっと速く正確に組み立てられます。
書き込んだ内容が意図通りかは、スプレッドシートをブラウザで開かなくても、読み取りコマンドで確認できます。
gws sheets spreadsheets values get \
--params '{"spreadsheetId": "<ID>", "range": "記録!A1:F10"}'Claude Codeにこの結果を読ませて「ヘッダーの列名が設計メモと一致しているか」をチェックさせておくと、あとになって「AppSheet側でカラムが認識されない・型が合わない」といったトラブルの芽を早い段階で潰せます。
ここから先はgwsの守備範囲外で、AppSheetエディタ(ブラウザ)での作業になります。AppSheetで新規アプリを作成し、データソースとして先ほどgwsで構築したスプレッドシートを指定すると、AppSheetがシート構成とヘッダー行から自動的にテーブル・カラムを認識します。View(画面)のレイアウト、入力フォームの見た目、承認フローやBotの設定、ユーザーごとの権限管理といった「業務アプリとしての型」は、AppSheet側の機能に任せるのが現実的です。Claude Code+gwsができるのは、あくまでその土台となるデータベース部分の構築までという期待値を持っておくと、役割分担で迷いません。
JSONは長くなりがち:シート数・列数が増えると--jsonに渡すJSONも長くなり、シェル上で崩れやすくなります。Claude Codeに一度JSONファイルとして書き出させ、それを読み込ませる形にすると事故が減ります。
設計変更は手戻りのコストが高い:スプレッドシートの列構成を後から変えると、AppSheet側でもカラムの対応付け直しが発生することがあります。ステップ1の設計を先に固めてから流し込む方が、結果的に速く済みます。
認証情報の扱い:~/.config/gws/credentials.jsonにはGoogleアカウントの認証情報が保存されます。共有端末や複数人で使うマシンでClaude Codeからgwsを実行する場合は、資格情報の置き場所とアクセス権限に注意してください。
できるのは「土台作り」まで:AppSheetの無料プランの制約など、DBを作った後に効いてくる注意点は当社の別記事「AppSheetで10人より多くのユーザーを無料で使う方法」でも解説しています。あわせてご確認ください。
AppSheetの業務アプリは、結局のところGoogleスプレッドシートというデータベースの上に成り立っています。そのスプレッドシート側の構築を、Claude CodeからGoogle Workspace公式CLIのgwsコマンドで自動化すれば、テーブル設計から実際のシート構築までを一気通貫でコマンド化でき、手作業でシートを組むよりも速く、列のズレのようなミスも起きにくくなります。AppSheet自体の画面設定や権限管理は引き続きAppSheetエディタの仕事ですが、「土台となるDB部分を整える」作業をClaude Codeに任せられるのは、業務アプリ構築のスピードを左右する現実的なメリットです。
「AppSheetアプリの土台となるスプレッドシート設計を効率化したい」「Claude Codeを業務アプリ構築に使ってみたい」という場合は、当社(Kirakuna)にご相談いただければ、業務の流れに合わせて一緒に設計いたします。
※本記事の内容は執筆時点(2026年9月)の情報および実際の検証に基づきます。gws・AppSheetの仕様は変更される場合があるため、最新情報は各公式ドキュメントでご確認ください。