AIツール比較

AIツールの比較と仕事での使い方(ChatGPT・Claude・Copilot の使い分け、GAS での業務の自動化)を公式情報で解説

GAS Gemini API連携の使い方|最初にやる3つとコード

運営 Aoba Works · 公開 · 28分で読めます

調べ方: に、各サービスの公式ページ・ヘルプなどで事実を確かめて書きました(出典 13 件・5 サイト・一覧)。公開の前に、出典の無い事実・作り話の体験・誇張が無いかを自動で点検しています。編集方針

#GAS #Google Apps Script #スプレッドシート

※この記事にはアフィリエイト広告(PR)が含まれます。紹介したサービスへの申し込みなどで、運営者に報酬が入ることがあります。

GASとGemini APIは、①Google AI StudioでAPIキーを作る、②キーをGASの「スクリプトプロパティ」に保存する、③UrlFetchAppでGemini APIを呼び、返ってきた文章をSpreadsheetAppでセルに書き込む、の3手順でつながります。Gemini APIには無料枠があり、一部のモデルは無料でも呼び出せます。ただし無料枠に送った内容はGoogleの製品改善に使われます。仕事のデータを流すなら、有料枠に切り替えるかどうかを先に決めておきましょう(Gemini API 料金・2026年10月時点・最新は公式で確認)。

あなたに合うのはどれ?

コードを書けるか、送るデータが社外秘かどうか。この2点で、選ぶものが変わります。

あなたに合うのはどれ?
状況まず選ぶもの最初に開くページ
初心者で、まず無料で動くところを見たいGemini API の無料枠+この記事のコードGoogle AI Studio の APIキー画面
仕事で毎日使い、顧客情報や社内文書も送るGemini API の有料枠(請求先アカウントを紐付ける)Gemini API 料金
コードは書きたくない。会社でWorkspaceの対象プランを契約しているスプレッドシートの AI 関数(=AI())AI 関数のヘルプ
社内で ChatGPT の GAS 連携をすでに使っている今のコードの「URL・認証・返り値」の3か所を書き換えるこの記事の「ChatGPT連携との違い」の表

無料枠はクレジットカードなしで始められるので、動作を確かめる段階に合っています。有料枠は「送ったデータを製品改善に使わない」と料金ページに書かれていて、業務データ向けです。AI 関数はコードが要りませんが、対象プランの契約が必要で、生成できるのは最初の350セルまでという制限があります(AI 関数のヘルプ)。

GASでGemini APIを使うにはどんな準備が必要?

必要なのは、Googleアカウント・Gemini APIキー・GASのプロジェクトの3つです。

Gemini APIキーは、裏側で必ずGoogle Cloudのプロジェクトにひもづきます。

「Every Gemini API key is associated with a Google Cloud project」(Gemini API キーの使い方)

訳すと「Gemini APIキーはすべて、どれかのGoogle Cloudプロジェクトにひもづいている」。料金の請求も使える回数の上限も、このプロジェクトの単位で管理されます。とはいえ、Google Cloudのコンソールを自分で操作しなくても、Google AI Studio側でキーを作ればプロジェクトは用意されます。

GASでGemini APIを使うにはどんな準備が必要?
準備するものどこで用意するか費用
Googleアカウント個人の Gmail でも Workspace のアカウントでもよい無料
Gemini APIキーGoogle AI Studio無料枠あり
GASのプロジェクトスプレッドシートの「拡張機能」→「Apps Script」無料
請求先アカウント(有料枠を使う場合だけ)Google AI Studio または Google Cloud使った分だけ

会社のWorkspaceアカウントで作業する場合は、管理者の設定によってGoogle AI StudioやApps Scriptが使えないことがあります。開けないときは、情報システム担当に「Google AI Studio と Apps Script の利用が許可されているか」を聞いてください。

GASそのものが初めてなら、ChatGPTとつなぐ版の ChatGPT GAS自動化、始め方の3手順 にエディタの開き方を書いています。どちらのAIでも、GAS側の操作は同じです。

Gemini APIキーの取得手順は?

Google AI Studioの「API Keys」画面で「Create API key」を押せば、キーが発行されます。

表記は2026年10月時点の公式ドキュメントのものです。画面の言語が日本語なら訳された表記になります。

  1. Google AI Studio の API Keys ページ を開き、Googleアカウントでログインする
  2. 初めてのときは利用規約が表示されるので、確認して同意する
  3. 「Create API key」を押す
  4. キーを入れるプロジェクトを選ぶ。既存のGoogle Cloudプロジェクトを使うときは「Import projects」で読み込む
  5. 表示されたキーをコピーし、次の手順でGASに貼るまで手元のメモ帳などに一時的に置いておく

キーの扱いについては、公式に3つの注意があります(Gemini API キーの使い方)。キーはパスワードと同じように人に見せないこと。本番ではブラウザ側(クライアント側)に埋め込まないこと。本番運用ではGoogle Cloudの Secret Manager の利用を検討すること、の3つです。キーの画面には「Add restrictions」があり、使えるAPIを絞る制限もかけられます。

つまずきやすい所

GASのスクリプトプロパティにAPIキーを安全に保存する方法は?

キーはコードに直接書かず、「プロジェクトの設定」の「スクリプト プロパティ」に保存します。

コードにキーを書くと、スプレッドシートを共有した相手やコードをコピーした人にもキーが見えてしまいます。スクリプトプロパティならコードの外に置けて、PropertiesService で読み込めます。公式の手順は次の5段です(Properties Service ガイド)。

  1. Apps Script のプロジェクトを開く
  2. 左の歯車アイコン「プロジェクトの設定」(Project Settings)を押す
  3. 「スクリプト プロパティ」の欄で「スクリプト プロパティを追加」(Add script property)を押す。2つ目からは「スクリプト プロパティを編集」
  4. 「プロパティ」に GEMINI_API_KEY、「値」にコピーしたキーを貼る
  5. 「スクリプト プロパティを保存」(Save script properties)を押す

コードからはこう読み込みます。

const apiKey = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');

画面から手で足せるプロパティは50個まで。値1つは9KBまでで、1つの保存先の合計は500KBまでです(Apps Script の割り当て・2026年10月時点)。APIキーなら1つで十分に収まります。

つまずきやすい所

GASからGemini APIを呼び出すコードの書き方は?

UrlFetchApp.fetch でGemini APIの generateContent のURLにPOSTし、返ってきたJSONから文章を取り出します。

URL・送るJSON・返り値の形は generateContent リファレンス と テキスト生成のガイド に沿っています。コード先頭の MODEL には、モデル一覧 で今提供されているモデル名を入れてください。モデルは入れ替わりが早く、提供が終わった名前を書くと404エラーになります。下のコードの gemini-2.5-flash は書き方の例です。

手順:コードを貼って動かす

  1. スプレッドシートの「拡張機能」→「Apps Script」を開く
  2. 最初からある function myFunction() {} を消して、下のコードを貼る
  3. MODEL の値を、モデル一覧と料金ページで確かめたモデル名に書き換える
  4. フロッピーのアイコン(プロジェクトを保存)を押す
  5. 上の関数の選択欄で testGemini を選び、「実行」を押す
  6. 初回は「承認が必要です」と出るので「権限を確認」→ 自分のアカウントを選ぶ。「このアプリは Google で確認されていません」と出たら「詳細」→「(プロジェクト名)(安全ではないページ)に移動」→「許可」
  7. 下の「実行ログ」にGeminiの回答が出れば成功です
// 使うモデル(例)。モデル一覧で現行の名前を、料金ページで無料枠の有無を確認してから決める
const MODEL = 'gemini-2.5-flash';

function callGemini(prompt) {
  const apiKey = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
  if (!apiKey) {
    throw new Error('スクリプトプロパティ GEMINI_API_KEY が設定されていません');
  }

  const url = 'https://generativelanguage.googleapis.com/v1beta/models/'
    + MODEL + ':generateContent';

  const options = {
    method: 'post',
    contentType: 'application/json',
    headers: { 'x-goog-api-key': apiKey },
    payload: JSON.stringify({
      contents: [{ parts: [{ text: prompt }] }]
    }),
    muteHttpExceptions: true
  };

  const res = UrlFetchApp.fetch(url, options);
  const code = res.getResponseCode();
  const body = JSON.parse(res.getContentText());

  if (code !== 200) {
    const msg = body.error ? body.error.message : res.getContentText();
    throw new Error('Gemini API エラー ' + code + ': ' + msg);
  }

  const cand = body.candidates && body.candidates[0];
  if (!cand || !cand.content) {
    const reason = body.promptFeedback ? body.promptFeedback.blockReason : '不明';
    throw new Error('回答が返りませんでした(blockReason: ' + reason + ')');
  }
  return cand.content.parts.map(p => p.text || '').join('');
}

function testGemini() {
  Logger.log(callGemini('GASとは何かを1文で説明してください。'));
}

キーはURLに付けず、x-goog-api-key というヘッダーで送っています。公式の例もこの形です(Gemini API キーの使い方)。muteHttpExceptions: true を付けたのは、失敗したときにGASがすぐ止まらず、エラーの中身を受け取れるようにするためです(UrlFetchApp リファレンス)。この指定がないと、エラーになってもGoogle側が返した理由の文章が見えません。

回答が返ってこなかったときは promptFeedback.blockReason を読みます。安全フィルタで止められた場合には、ここに SAFETY などの理由が入る仕様です(generateContent リファレンス)。

Geminiの回答をスプレッドシートに出力する手順は?

A列の文章を1行ずつGeminiに送り、返ってきた答えをB列に書き込む関数を足せば完成です。

たとえば「A列に問い合わせ文、B列に3行の要約」というシートを考えてみます。1行目は見出し行とします。

  1. シートの名前を「シート1」にする(下のコードの名前と合わせる)
  2. A1に「問い合わせ」、B1に「要約」と入れ、A2から下に文章を入れる
  3. 前の見出しのコードの下に、次の summarizeRows を貼って保存する
  4. 関数の選択欄で summarizeRows を選んで「実行」
function summarizeRows() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
  const lastRow = sheet.getLastRow();
  if (lastRow < 2) return;

  const values = sheet.getRange(2, 1, lastRow - 1, 2).getValues();
  values.forEach((row, i) => {
    const text = row[0];
    const done = row[1];
    if (text && !done) {   // B列が空の行だけ処理する
      const answer = callGemini('次の問い合わせを3行で要約してください。\n\n' + text);
      sheet.getRange(i + 2, 2).setValue(answer);
      Utilities.sleep(1000); // 1分あたりの回数制限に当たりにくくする
    }
  });
}

「B列が空の行だけ」に絞ったのは、途中で止まっても、もう一度実行すれば続きから処理できるようにするためです。同じ行を何度も送らずに済むので、無料枠の回数も料金も節約できます。

自分のシートに合わせて変える所

自分のシートに合わせて変える所
変えたいこと直す場所
シート名が違うgetSheetByName('シート1') の中
要約ではなく分類・翻訳にしたいcallGemini( に渡す指示文
結果をC列に出したいgetRange(2, 1, lastRow - 1, 2) の最後を 3 に、getRange(i + 2, 2) を 3 に、row[1] を row[2] に
毎朝自動で動かしたい左の時計アイコン「トリガー」→「トリガーを追加」で、時間主導型を選ぶ

つまずきやすい所

GASには時間の上限があります。1回の実行は6分まで。セルに =関数名() と書いて呼ぶ「カスタム関数」は30秒までです(Apps Script の割り当て・2026年10月時点)。

何百行もあるシートを一度に回すと、6分で「実行時間の上限を超えました」となって止まります。上のコードはB列が空の行だけを処理するので、止まったらもう一度実行してください。毎回止まるほど行数が多いなら、トリガーで10分おきに動かすのが手軽です。

セルに =GEMINI(A2) のように書くカスタム関数も作れます。ただ、30秒の上限に加えて、シートを開くたびや再計算のたびにAPIが呼ばれやすい。回数がかさみやすいので、最初はボタンやメニューから実行する形をおすすめします。

GAS×Gemini APIとGAS×ChatGPT APIの違いは?

GAS側の書き方はほぼ同じです。違うのはURL・キーの渡し方・返ってくるJSONの形の3つで、そこだけ書き換えればつながります。

ChatGPT GAS自動化、始め方の3手順 のコードを持っている人は、下の表と見比べてください。

GAS×Gemini APIとGAS×ChatGPT APIの違いは?
比べる所Gemini API(generateContent)OpenAI API(Responses)
キーを作る場所Google AI StudioOpenAI の管理画面
URLhttps://generativelanguage.googleapis.com/v1beta/models/モデル名:generateContenthttps://api.openai.com/v1/responses
キーの渡し方ヘッダー x-goog-api-key: キーヘッダー Authorization: Bearer キー
モデル名を書く場所URLの中送るJSONの model
送るJSON{"contents":[{"parts":[{"text":"…"}]}]}{"model":"…","input":"…"}
文章がある場所candidates[0].content.parts[].textoutput[].content[].text
無料で試せる枠料金ページに Free Tier あり料金は公式で確認

出典は Gemini API キーの使い方、generateContent リファレンス、OpenAI Responses API リファレンス(いずれも2026年10月時点)。

書き換えで一番間違えやすいのは「モデル名を書く場所」です。OpenAI版はJSONの中に model を書きますが、Gemini版はURLの中に入ります。ChatGPT版のpayloadから model を消し忘れても動くことはありますが、URL側のモデル名を入れ忘れると404になります。

チャットで使うAIの選び方は ChatGPT Claude Copilot使い分けの基準 にまとめています。

Gemini APIの無料利用枠はどこまで?

無料枠で使えるのは一部のモデルだけで、回数に上限があり、送った内容はGoogleの製品改善に使われます。

どのモデルが無料枠の対象かは、料金ページ の各モデルの「Free Tier」の欄で確認できます。上位のモデルや画像生成などは無料枠の対象外のことがあり、対象や単価は改定されることがあります。GASで使う前に、MODEL に書くモデルの欄を必ず見てください。単価は100万トークンあたりのドル建てで、入力と出力で別々に書かれています。

無料枠と有料枠の違い

無料枠と有料枠の違い
比べる所無料枠(Free)有料枠(Paid)
始め方キーを作るだけ請求先アカウントをプロジェクトに紐付ける
送った内容の扱い製品改善に使われる製品改善に使われない
回数の上限低め。値は AI Studio で確認高い。支払い額に応じて上がる
Batch API(50%割引)なしあり

出典:Gemini API 料金。

回数の上限は、1分あたりの回数(RPM)、1分あたりの入力トークン数(TPM)、1日あたりの回数(RPD)の3種類で決まります。1日の回数は太平洋時間の0時にリセットされます。日本時間なら夏時間の間は16時、それ以外は17時です。無料枠の具体的な数字は公式ドキュメントには書かれておらず、「AI Studio で確認できる」と案内されています(レート制限・2026年10月時点)。

有料枠は4段階あります。

無料枠と有料枠の違い
段階条件
Free有効なプロジェクトがある
Tier 1請求先アカウントを設定して紐付ける
Tier 2合計100ドル以上を支払い、最初の支払いから3日たつ
Tier 3合計1,000ドル以上を支払い、最初の支払いから30日たつ

出典:レート制限(2026年10月時点)。

GAS側にも上限があります。外部へのアクセス(URL Fetch)は、個人のGoogleアカウントで1日20,000回、Workspaceで1日100,000回までです(Apps Script の割り当て)。たいていの場合、先にGemini側の上限に当たります。

顧客名・社員の情報・未公開の数字を送るなら、最初から有料枠にしてください。公開済みの文章の要約や練習用のデータなら、無料枠で十分です。

連携時によく出るエラーとその対処法は?

エラーの多くは、キーの設定ミス(403)・モデル名の誤り(404)・回数の上限(429)の3つです。

実行ログに出る数字を見て、下の表で原因を探してください。

連携時によく出るエラーとその対処法は?
ログの数字意味直し方
400 INVALID_ARGUMENT送ったJSONの形や設定値がおかしいcontents の綴り、temperature などの値の範囲、URLの v1beta を確認
400 FAILED_PRECONDITION前提条件を満たしていない無料枠の対象か、請求先の設定を確認
403 PERMISSION_DENIEDキーが無効、または権限がないキーをコピーし直してスクリプトプロパティを上書き。キーの制限設定も確認
404 NOT_FOUNDモデル名が存在しない・提供が終わったMODEL の値をモデル一覧と見比べる
429 RESOURCE_EXHAUSTED回数の上限に達した時間をおく。Utilities.sleep の秒数を増やす。有料枠を検討
500 / 503 / 504Google側の一時的な不具合や混雑少し待ってから再実行

出典:Gemini API トラブルシューティング(2026年10月時点)。

公式は、429に対して「指数バックオフ」を勧めています。待ち時間を1秒、2秒、4秒と倍にしながら再試行するやり方です。GASなら、callGemini を呼ぶ所を次のように包めば実現できます。

function callGeminiWithRetry(prompt) {
  let wait = 1000;
  for (let i = 0; i < 4; i++) {
    try {
      return callGemini(prompt);
    } catch (e) {
      if (!/エラー (429|500|503|504)/.test(e.message) || i === 3) throw e;
      Utilities.sleep(wait);
      wait *= 2;
    }
  }
}

数字が出ないエラー

エラーの意味をAIに聞くのも手です。ログの文章をそのままGeminiやClaudeに貼って「GASでこのエラーが出た。原因と直し方は?」と聞けば、どこを見ればよいか見当がつきます。コードを書く作業をAIに手伝わせる流れは、Claude Code使い方|無料の範囲と料金表・導入7手順 でも説明しています。

次にやること

今日やるのは2つだけ。Google AI StudioでAPIキーを1つ作ることと、testGemini を実行してログに回答が出るのを見ることです。

自分でやる人の今日の一歩

  1. Google AI Studio の API Keys ページ で「Create API key」を押す
  2. 練習用のスプレッドシートを新しく作り、この記事のコードを貼って MODEL を確認し、testGemini を実行する
  3. 動いたら、A列に公開済みの文章を5行ほど入れて summarizeRows を試す。社外秘のデータはまだ入れない

自分でやるのが大変・早く確実にしたい人

自分でやるのが大変・早く確実にしたい人
選択肢費用(2026年10月時点・最新は公式で確認)向いている人向いていない人
Gemini API の有料枠使った分だけ。モデルごとの単価は料金ページで確認業務データを送る人。回数の上限に何度も当たる人月に数回しか動かさない人
スプレッドシートの AI 関数対象の Workspace / Google AI のプラン料金(ヘルプ)コードを書かずにセルで要約・分類したい人350セルを超える量を一度に処理したい人
AIやプログラミングの講座講座によるGASを体系的に学び、仕事の仕組みづくりまでやりたい人今すぐ1つの作業を自動化したいだけの人

有料枠のデメリットは、使った分だけ請求が来ることです。トリガーの設定ミスで同じ処理が繰り返されると、気づかないうちに回数が増えます。有料枠に切り替えたら、Google Cloudの予算アラートを設定しておくと安心です。講座を選ぶなら、給付金の対象かどうかで絞る方法を AIスクール比較、給付金対象で絞る3つの軸 に書いています。

このサイトの関連記事

よくある質問

GASでGemini APIを使うのにクレジットカードは必要?

無料枠だけで使うなら要りません。Google AI StudioでAPIキーを作れば、無料枠のあるモデルを呼び出せます。カードが必要になるのは、請求先アカウントを紐付けて有料枠(Tier 1以上)に上げるときです。

無料枠で会社のデータを送っても大丈夫?

おすすめしません。料金ページには、無料枠のデータが製品改善に使われると書かれています。顧客情報や社内の数字を扱うなら有料枠に切り替え、あわせて社内のルールも確認してください。

モデル名は何を書けばいい?

モデル一覧 に載っている現行のモデル名を書き、料金ページ で無料枠の有無と単価を確かめてください。この記事のコードの gemini-2.5-flash は書き方の例です。モデルは入れ替わりが早く、提供が終わると404エラーになります。半年に1回ほど見直すと安心です。

セルに =GEMINI(A2) と書いて使えますか?

カスタム関数として作れば使えます。ただし1回30秒の上限があり、再計算のたびにAPIが呼ばれて回数を使いやすくなります。最初はこの記事の summarizeRows のように、実行ボタンやトリガーから動かす形にしてください。

出典

次に検討するなら(PR)

内容の誤りや古くなった情報に気づいたら、shigoto.ai.note@gmail.com までお知らせください。記事は順番に公式の情報で確かめ直しています。