記事一覧に戻る
yeonghyeon yeonghyeon · 2026年4月28日

APIで届いたデータをGoogle Sheetsに自動で積み上げる、最も短い道

APIで届いたデータをGoogle Sheetsに自動で積み上げる、最も短い道

こんにちは、3Min APIの開発をリードしているyeonghyeonです。

今回の記事は、運営者の皆さまからのリクエストから始まりました。「注文が入ったら、ただGoogleシートに1行ずつ積み上がるだけでいいんです。」というご要望が一度や二度ではありませんでした。自動化ツールを別途つなぐ方法はすでにありましたが、ツールが一つ増えること自体が負担です。そこで 3Min APIの中にGoogle Driveとシート連携を直接組み込みました。 Googleアカウントを一度つなぐだけで完了し、その後はAPIが呼び出されるたびに自分のシートに1行ずつ自動で積み上がります。

この記事は、その機能に初めて出会う方への案内です。なぜこの機能が必要だったのか他の自動化ツールを挟む方式と何が違うのか今日5分でどこまで試せるのかを順に整理しました。事前知識は不要です。

「ただシートに積み上がるだけでいいんです」というリクエストの裏にある本当の課題

シートにデータを集めたい理由は、ほとんど共通しています。売上を一目で確認するため、自分でフィルタや並べ替えをかけてみるため、会計士やマーケターにそのまま渡すため。シートはこうした用途に最も近く、別のツールに移す必要もありません。つまり シートこそが目的であり、その間のすべてのステップは余計な手間ということです。

ところが「APIで受け取ったデータ」と「自分のシート」をつなぐ作業は、思ったより簡単ではありません。通常はこういう道のりになります。

  1. 3Min APIのような場所でデータを受け取り、
  2. Zapier・Make・n8nのような自動化ツールにもう一つ登録して、
  3. Webhookでそのツールにデータを流し、
  4. そのツールがGoogle Sheetsに行を追加する。

うまく回れば良いのですが、運営する立場からは三つの負担がついてきます。

  • ツール費用 — 自動化ツールごとに月額が発生し、呼び出し量が増えると上位プランへの移行が必要になります。
  • 学習コスト — ノードをつなぎ、トリガーを作り、認証をもう一度設定する必要があります。「注文を1行積み上げる」だけにしては手順が多すぎます。
  • 消失リスク — 自動化ツールがメンテナンス中だったり、呼び出し上限を超えたりすると、その間に届いたデータが静かに捨てられることがあります。シートに1行抜けていても、何が抜けたのか確認する手段がありません。

特に最後の項目が決定的でした。データを失うことは、ビジネスにおいて単なる不便ではなく 帳簿に穴が開くことです。自動化ツールが正常に動いている前提の上にビジネスを乗せるのは難しいのです。

そこで選んだ答え — シート連携を製品の中に入れる

解決の方向は明確でした。3Min APIとGoogle Driveの間に他のツールを挟まないようにすること。Googleアカウントを一度つなぎ、同意画面で1つの権限だけを許可していただければ完了です。その後はAPIが呼ばれるたびに自分のDriveのシートへ1行ずつ自動で記録されます。自動化ツールも追加サブスクリプションもトリガー設定も不要です。

外部API呼び出しがまず3Min APIで安全に保存され、続いてGoogle Sheetsに自動で1行ずつ記録される流れを示す概念図

外部からの呼び出し → まず3Min APIで安全に保存 → Google Sheetsに自動記録。間に自動化ツールは挟まりません。

この方式で何が変わるかを短くまとめます。

  • ツール一つで完結します。 3Min APIの中ですべての設定が終わります。
  • データは常にまず安全に保存されます。 シートに行が追加される前に、呼び出し自体が3Min APIのログとアーカイブに記録されます。シート記録はその上に乗るボーナスであり、生命線ではありません。
  • 失敗しても元のデータは残ります。 一時的に上限を超えても自動でリトライし、それでも最後まで失敗してもシートに1行抜けるだけで、データそのものは消えません。
  • 権限は狭く。 Googleに要求する権限は drive.file 一つだけです。3Min APIが作成したシートにのみアクセスでき、他のDriveの資料には触れません。

まとめるとこうです。シートが目的なら、その間は短いほど良い。

連携したときDriveに作られるもの

実際につないだときDriveにどんな形が作られるかを先に見るのが早いです。Drive最上位に 3Min API というフォルダが自動で作られ、その中は次のように整理されます。

3Min API/
├── user-signup/                              ← エンドポイント別フォルダ
│   ├── sandbox_user-signup_2026-04           ← 月別シート (サンドボックス)
│   ├── sandbox_user-signup_2026-05
│   └── production_user-signup_2026-05        ← 月別シート (本番)
└── order-create/
    └── production_order-create_2026-05

ルールは単純です。エンドポイントごとにフォルダ一つその中に環境(サンドボックス/本番)と月ごとにシート1枚ずつ。新しい月が始まると次の呼び出し時点で新しいシートが自動で作られるので、1枚のシートに行が積み上がりすぎて重くなる心配もありません。シートを別のフォルダへ移したり名前を変えても安全です。3Min APIはシートをファイルIDで追跡するため、場所と名前が変わっても同じファイルへ行を追加し続けます。

各シートの最初の行、つまりヘッダーは2種類の列で構成されます。

  • メタ列record_idcreated_atconfig_versionoperationstatuscollaboration_key。システムが自動的に埋める列です。どの呼び出しだったかを追跡する情報です。
  • ペイロード列 — 定義したフィールド(メール・金額・住所…)が payload_ プレフィックスを付けて1列ずつ展開されます。メタ列と出所が混ざらないよう、あえて区別しています。

後でエンドポイントに新しいフィールドを追加すると、シートのヘッダーが右に自動で拡張されます。以前の行の新しい列の位置は空白のまま残り、新しい呼び出しから埋まっていきます。シート上でヘッダーを直接消したり順序を変えたりしなければ、マッピングは自然に保たれます。

サンドボックスと本番は別々に動きます

3Min APIのすべてのエンドポイントは サンドボックス(開発・テスト用)と 本番(実サービス用)が完全に分離されています。Google Sheets連携もこの分離をそのまま踏襲します。同じエンドポイントでも環境タブごとに連携をオン/オフでき、シートファイルも環境別に作られます。

そのためによく出会う安全策が一つあります。サンドボックスでシート連携まで完了したエンドポイントを本番にデプロイしても、本番のシート連携は自動では引き継がれません。 本番タブのGoogle Sheetsカードで 連携開始 をもう一度押していただく必要があります。あえて二重に確認しています。テストデータと実売上データが同じシートに混ざるのは、相当やっかいな事故になり得るからです。

5分で進める ― 最初のシート記録まで

理屈より実際の動作を一度見るほうが早いです。下の順で進めれば大丈夫です。コードは1行も書きませんし、ツールも3Min API一つで足ります。

1. アカウント作成と最初のエンドポイント作成

登録後には、最初のエンドポイントを作る短い オンボーディング が自動で案内されます。Free プランのままでもGoogle Sheets連携は使えます。運営しているビジネスに合わせて、最初のエンドポイントを一つだけ作ってみてください。何でも構いません。最初は 注文受付問い合わせ登録予約申請 のように1件が1行で収まるシンプルな形が最も合います。フィールドは2〜3個から始めても十分です。詳しい手順は エンドポイント作成マニュアル にまとめてあります。

そもそもエンドポイントとは何かをじっくり押さえたい場合は、まず APIとは? 開発者でない方のための基礎ガイド を読むことをおすすめします。「決まったアドレスへ、決まった形のメッセージをやり取りする窓口」という感覚さえつかめば、その後は自然と続いていきます。

2. Google Sheets カードから連携開始

エンドポイント詳細ページを開くと、画面の中に Google Sheets という名前のカードが見えます。カード内の 連携開始 ボタンを押すとGoogleの同意画面に移動します。

同意画面で3Min APIが要求する権限は drive.file 一つだけです。自分が作成したシートにのみアクセスできる狭い権限です。権限ごとのチェックボックスが一緒に表示される場合は、すべてチェックを入れた状態で同意してください。そうしないとシート記録が正常に動作しません。

3. テスト送信で確認

連携が完了するとカードに 連携済み バッジとシートのファイル名が表示されます。ここで テスト送信 ボタンを一度だけ押してみてください。サンプル行が1つシートに記録され、実際の呼び出し1件がどのようにシートへ移されるかを目で確認できます。開発ツールなしで結果を即座に見られる、最も速い道です。

これでこのエンドポイントへAPIが呼ばれるたび、シートの最後の行に自動で記録されます。ここまでで全部です。

知っておくと良いこと

Google Sheets自体に書き込み上限があります

シート記録には 3Min APIが定めた上限ではなく、Googleが定めたユーザー単位のシート書き込み上限があります。通常は1分間に60件程度で、同じGoogleアカウントで連携したすべてのエンドポイントがこの上限を共有します。シート自動記録機能全体がこの上限の上で動いていると考えてください。

普段のトラフィックでは上限自体を意識することはほとんどありません。ただし時間が経って呼び出しが伸び続け、上限に頻繁にぶつかるようになったら、それはむしろ 事業が好調であるという良いシグナルでもあります。Googleのポリシー上、ユーザー単位で上限を更に引き上げることは難しいため、その時点ではシートはサマリー・ダッシュボード用途にとどめ、元データは ログアーカイブ から日次/週次でダウンロードして保管したり、自社データベースの導入を検討する時期です。3Min APIはその段階でも入口ゲートウェイとして引き続きご利用いただけるので、移行の負担なくステップアップできます。

システム通知で状況を受け取れます

シート記録の失敗や再認証が必要になったとき即座に気付けるよう、エンドポイントごとに Discord / Slack / Telegram の通知チャンネルを登録できます。エンドポイント詳細 のシステム通知設定でチャンネルを一度つないでおけば、シート書き込み失敗Google再認証要求 の二種類のイベントがそのチャンネルに直接通知されます。毎回ダッシュボードを覗かなくても、シートが正しく埋まっているかを確認できる最も軽い方法です。

その間に3Min APIが自動で処理していること

通知が飛ぶような事態は、実際にはあまり頻繁には起こりません。その隙間を3Min APIが次の三つの方法で埋めているからです。

  • 自動リトライ — 一時的な上限超過(429)や一時的な障害が発生した場合、約5分間自動でリトライしてほとんどを吸収します。Googleには上限緩和も継続的に申請して処理量を増やしています。
  • 元データは常に安全 — 自動リトライ後にもシート記録が最後まで失敗した場合は シートだけ1行抜ける 形になり、元の呼び出しは ログアーカイブ にそのまま保存されます。シート記録が失敗してもデータが消えるわけではありません。
  • 呼び出し順に1行ずつ処理 — シート記録は呼び出し順に1行ずつ処理され、シートに行が見えるまでは通常 数秒以内です。呼び出しが集中する時間帯には反映が普段より遅くなったり、行の並びが呼び出し順と少しずれることがありますが、正確な順序が必要なときはシートの created_at 列で並べ替えてご確認ください。

今日試せる一つのこと

大掛かりな自動化を一度に組まなくても大丈夫です。おすすめする一つはこれだけです。

最初のエンドポイントを一つ作る → Google Sheets連携をオンにする → テスト送信を一度。

ここまで進めていただくと、自分のDriveにビジネスデータが自動で積み上がる小さなパイプラインが一つ完成します。その上に新しいフィールドを足したり、取引先にAPIキーを渡したり、売上列でチャートを描いたりしてみてください。一度に全自動化を組むより、最も短い道で1行がシートに入る瞬間を先に見る方をおすすめします。

より詳しい設定や例外対応は Google Sheets連携マニュアル にまとめてあります。なぜこのツールを作ったのかについて、もう少し聞いていただけるなら、なぜ3Min APIを作ったのか にその背景を書いてあります。よろしければ併せてご覧ください。