GASでGeminiを使うには、Google AI StudioでAPIキーを作り、Apps Scriptのスクリプトプロパティに保存して、UrlFetchAppでGemini APIを呼びます。スプレッドシートのセルから呼べるカスタム関数にしたり、トリガーで毎朝動かしたりもできます。Gemini APIは無料枠でも使えますが、無料枠では送った内容がGoogleのプロダクトの改善に使われるため、顧客の情報や社外秘の資料を扱う業務では有料枠にします。

2026年10月時点の情報です。モデル名と料金はGemini APIの料金ページ、実行時間などの上限はApps Scriptの割り当てのページで最新の内容をご確認ください。

この記事の答え

  • GASからGeminiを呼ぶのは、APIキーの作成、スクリプトプロパティへの保存、UrlFetchAppでの呼び出しの3段階で、コードは関数1つで足ります
  • 無料枠のままでよいかは、社外に出せない情報を送るかどうかで決まります
  • まずは公開済みの情報か作り物のデータで、スプレッドシートのカスタム関数から試します

GASとGeminiを組み合わせると何ができるか

Google Apps Script(GAS)は、スプレッドシート・Gmail・GoogleドライブなどのGoogleのサービスを、JavaScriptで操作できる仕組みです。ここにGemini APIを組み合わせると、表やメールの文章をGeminiに読ませ、結果を同じ表へ書き戻す作業を、サーバーを用意せずに自動化できます。

たとえば、次のような作業がGASとGeminiで組めます。

  • 問い合わせフォームの回答を、毎朝1行に要約して担当者の列に振り分ける
  • 届いたメールの本文から、社名・日付・金額を抜き出してスプレッドシートに書く
  • 商品の説明文の下書きを、項目の表から1行ずつ作る
  • 会議のメモから、決まったことと担当者を抜き出す

どれも、決まった形の文章を、決まった形で読み取って書き戻す作業です。毎回の判断が大きく変わる作業より、件数が多く手順が決まった作業のほうが向いています。

Gemini APIは無料で使えるか:無料枠と有料枠の違い

Gemini APIは無料で使えます。Google AI Studioでキーを作れば、課金を設定しなくても無料枠の範囲で呼べます。GASで使うときに決めておくのは、無料枠で送った内容がGoogleのプロダクトの改善に使われ、有料枠では使われないという違いです。モデルごとの単価や無料枠の上限、月額の見積もり方は、次の記事にまとめています。

法人で使うなら、送る内容で無料か有料かを決める

顧客の情報、社外秘の資料、個人情報を1件でも送るなら、有料枠のキーを使います。無料枠で送った内容はプロダクトの改善に使われるため、社内の利用ルールで社外に出してはいけない情報は、量が少なくても無料枠に流せません。有料枠にするには、Google AI Studioでキーの属するプロジェクトに課金を設定します。

量が増えてから有料枠に切り替える場合も、試しの段階で使っていたキーと業務用のキーを分けておくと、どのデータをどちらへ送ったかを後から説明できます。

無料枠のままでよいかを判断する

無料枠のままでよいか、有料枠にすべきかは、次の3つの問いで決められます。

無料枠のままでよいかの判断 送る情報の中身、処理の量、止まったときの影響の3つの問いで、無料枠のままか有料枠にするかを決める ・上から順に答え、最初に分かれたところで決まります 顧客の情報や社外秘の 資料をGeminiへ送るか 有料枠にする ・送った内容が改善に使われない はい いいえ 1日の呼び出しが無料枠 の回数の上限に近いか 有料枠にする ・429のエラーで止まるのを防ぐ はい いいえ 止まると翌日の業務に 響く処理か 有料枠にする ・費用の上限も一緒に決める はい いいえ 無料枠のまま試してよい ・公開済みの情報や作り物のデータで試す
社外に出せない情報を送るなら、量が少なくても有料枠にします。

3つのどれにも当てはまらなければ、無料枠のまま試してかまいません。逆に、毎朝の処理が止まると翌日の業務に響くようになったら、回数の上限に当たる前に有料枠へ移し、Google Cloudの予算のアラートで月の費用の上限も決めておきます。

Google Workspaceの画面から使うGeminiの有料プランは、APIとは別の契約です。

GASでGeminiを呼ぶ準備:APIキーとスクリプトプロパティ

GASからGeminiを呼ぶ前に、APIキーを作り、コードに直接書かずに保存しておきます。

Google AI StudioでAPIキーを作る

  1. Google AI Studio(aistudio.google.com)に、業務で使うGoogleアカウントでログインする
  2. APIキーのページを開き、「API キーを作成」を押す
  3. 作られたキーをコピーする

APIキーはパスワードと同じ扱いにします。キーを知っている人は誰でも、そのキーの持ち主として呼び出せ、有料枠なら費用もそのプロジェクトにかかります。チャットやメールに貼らず、次の手順でスクリプトプロパティにだけ保存します。

スクリプトプロパティにキーを保存する

コードの中にキーを書くと、スプレッドシートを共有した相手や、コードを見せた相手にキーが渡ります。Apps Scriptには、コードとは別に値を保存できるスクリプトプロパティがあるので、そこへ入れます。

  1. スプレッドシートを開き、「拡張機能」から「Apps Script」を開く
  2. 編集画面の左にある歯車の「プロジェクトの設定」を押す
  3. 画面の下の「スクリプト プロパティ」で「スクリプト プロパティを追加」を押す
  4. プロパティに GEMINI_API_KEY、値にコピーしたキーを入れ、「スクリプト プロパティを保存」を押す

スクリプトプロパティはコードを読む人からは隠れますが、編集権限のある人には見えます。共有の範囲は、キーを見せてよい人に絞ります。

UrlFetchAppでGemini APIを呼ぶコード

キーを保存したら、Gemini APIを呼ぶ関数を1つ作ります。キーはURLに付けず、x-goog-api-key という名前のヘッダーで渡します。

const GEMINI_MODEL = 'gemini-3.8-flash';
const GEMINI_URL = 'https://generativelanguage.googleapis.com/v1beta/interactions';

function callGemini(prompt) {
  const apiKey = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
  const res = UrlFetchApp.fetch(GEMINI_URL, {
    method: 'post',
    contentType: 'application/json',
    headers: { 'x-goog-api-key': apiKey },
    payload: JSON.stringify({ model: GEMINI_MODEL, input: prompt }),
    muteHttpExceptions: true,
  });
  const code = res.getResponseCode();
  if (code !== 200) {
    throw new Error('Gemini API error ' + code + ': ' + res.getContentText());
  }
  const data = JSON.parse(res.getContentText());
  // 応答の文章は、steps の中の model_output に入っている
  return (data.steps || [])
    .filter(step => step.type === 'model_output')
    .flatMap(step => step.content || [])
    .filter(part => part.type === 'text')
    .map(part => part.text)
    .join('');
}

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

初めて動かすときの操作

  1. コードを貼り付けて保存し、上の関数の選択欄で testGemini を選んで「実行」を押す
  2. 初回は承認の画面が出るので、自分のアカウントを選んで外部へのアクセスを許可する
  3. 下の実行ログにGeminiの答えが出れば成功

muteHttpExceptions: true を付けておくと、エラーのときもGeminiから返ってきた説明をログで読めます。付けないと、Apps Scriptの短いエラー表示だけで止まり、原因が分かりにくくなります。

モデル名を選ぶときの注意

コードの GEMINI_MODEL は、2026年10月時点で料金ページに載っているGemini 3.8 Flashにしています。費用を抑えたい処理ではFlash-Liteのモデルに替えます。古い記事に多い gemini-1.5 のような名前は、今のモデル一覧にありません。動かないときは、まずモデル名がGemini APIの料金ページの一覧にあるかを確かめます。

スプレッドシートのカスタム関数でGeminiを使う

callGemini があれば、スプレッドシートのセルから =GEMINI(A2) の形で呼べるカスタム関数を作れます。

/**
 * セルの文章をGeminiに渡して、指示どおりの結果を返す
 * @param {string} text 対象の文章
 * @param {string} instruction 指示(省略すると3行で要約)
 * @customfunction
 */
function GEMINI(text, instruction) {
  if (!text) return '';
  const order = instruction || '次の文章を3行で要約してください。';
  return callGemini(order + '\n\n' + text);
}

B2のセルに =GEMINI(A2, "社名だけを抜き出してください") と書くと、A2の文章から社名が返ります。

カスタム関数で気をつけること

カスタム関数は手軽ですが、シートを開き直したときや参照先が変わったときに計算し直され、そのたびにGemini APIを呼びます。数百行に同じ式を入れると、短い時間に呼び出しが集中し、回数の上限に当たりやすくなります。結果が出たら、列をコピーして「値のみ貼り付け」で固定するか、次の節のトリガーで動かす形に替えます。

GASとGeminiをトリガーで毎日自動実行する

毎日決まった時間に処理したい作業は、シートの未処理の行をまとめて読む関数を作り、トリガーで動かします。次の例は、「問い合わせ」シートのA列の文章を要約して、B列が空の行だけに書き込みます。

function summarizeNewRows() {
  const start = Date.now();
  const sheet = SpreadsheetApp.getActive().getSheetByName('問い合わせ');
  const lastRow = sheet.getLastRow();
  if (lastRow < 2) return;
  const rows = sheet.getRange(2, 1, lastRow - 1, 2).getValues();
  for (let i = 0; i < rows.length; i++) {
    if (!rows[i][0] || rows[i][1]) continue;       // 空の行と要約済みの行は飛ばす
    if (Date.now() - start > 5 * 60 * 1000) break; // 5分を過ぎたら止め、残りは次の実行へ
    const summary = callGemini('次の問い合わせを1行で要約してください。\n\n' + rows[i][0]);
    sheet.getRange(i + 2, 2).setValue(summary);
    Utilities.sleep(1000);                         // 呼び出しの間隔を空ける
  }
}

時間主導型のトリガーを設定する

  1. Apps Scriptの編集画面の左にある時計の「トリガー」を押す
  2. 右下の「トリガーを追加」を押す
  3. 実行する関数に summarizeNewRows、イベントのソースに「時間主導型」、タイプに「日付ベースのタイマー」を選び、動かす時間帯を選んで保存する

トリガーは、設定した人のアカウントの権限と割り当てで動きます。担当者が異動や退職でアカウントを止めると、処理も止まります。業務で続けて使うスクリプトは、誰のアカウントで動いているかを記録しておきます。

GASでGeminiを使うときの上限とエラー

Apps Scriptには、1回の実行の長さや、外部のURLを呼べる回数に上限があります。Gemini API側にも、1分・1日あたりに呼べる回数の上限があります。

項目 上限 当たったときの分け方
1回の実行の長さ 6分 経過時間を見て途中で止め、残りの行は次のトリガーの実行で処理する
カスタム関数1回の長さ 30秒 長い文章や重い指示はカスタム関数で呼ばず、トリガーで動かす関数に移す
URLの取得回数(個人のGoogleアカウント) 1日20,000回 処理済みの行を飛ばし、同じ文章を何度も送らない
URLの取得回数(Google Workspaceのアカウント) 1日100,000回 部署ごとにスクリプトを分け、1つのアカウントに集中させない

上限の値は、Apps Scriptの割り当てのページで2026年10月3日に確認したものです。

よくあるエラーと対処

症状 主な原因 対処
400・403のエラーが返る APIキーの貼り間違い、プロパティ名の違い、キーの無効化 スクリプト プロパティの名前と値を確かめ、Google AI Studioでキーが有効かを見る
404のエラーが返る モデル名が古い・綴りが違う 料金ページの一覧にあるモデル名へ直す
429のエラーが返る 短い時間に呼びすぎ、回数の上限に当たった 呼び出しの間隔を空け、カスタム関数の式を値に置き換える。毎日当たるなら有料枠にする
「Exceeded maximum execution time」と出る 1回の実行が6分を超えた 処理を途中で止めて次の実行に回す形にする
カスタム関数のセルがエラーのまま 30秒を超えた、または承認が要る機能を使った 指示を短くするか、トリガーで動かす関数に移す

429が続くときに、待たずに何度も呼び直すと、上限にさらに当たり続けます。呼び直すなら間隔を空け、件数が多い日は翌日の実行へ回します。

Geminiに頼んでGASのコードを書かせる

GASのコードは、Gemini自身に書かせることもできます。Geminiのアプリやスプレッドシートの横に出るGeminiに、「A列の文章をGemini APIで要約してB列に書くGASを書いて。キーはスクリプトプロパティのGEMINI_API_KEYから読む」のように、シートの形とキーの置き場所まで伝えて頼みます。

書かせたコードは、コピーしたシートと作り物のデータで動かしてから、本番のシートに移します。AIが書いたコードには、古いモデル名や、キーをコードに直接書く書き方が混ざることがあります。動かす前に、キーがコードに書かれていないか、モデル名が今のものかを確かめます。

当社の事例:Google Workspace with GeminiとGASで提案資料の作成をつないだ

当社が支援した広告代理店では、社内の規定で外部の生成AIツールを使えなかったため、すでに契約していたGoogle Workspace with GeminiとGASだけで、提案資料の作成をつなぎました。GASが受け持ったのは、Geminiが調べて作った骨子を社内のスライドの型に流し込み、Googleスライドを作るところです。骨子の確認と最後の仕上げは担当者が持ちます。

その結果、担当者1人あたり月20時間の工数を削減しました。調べものから骨子を作るまでの進め方と仕組みの全体は、次の記事の事例で紹介しています。

まとめ:GASでGeminiを使う手順と、無料枠を続けるかの判断

  • GASでGeminiを使うには、Google AI StudioでAPIキーを作り、スクリプトプロパティに保存し、UrlFetchAppで x-goog-api-key のヘッダーを付けて呼ぶ
  • スプレッドシートでは =GEMINI(A2) の形のカスタム関数で試し、件数が増えたらトリガーで毎日動かす形に移す
  • 無料枠では送った内容がプロダクトの改善に使われるため、社外に出せない情報を送るなら有料枠にする
  • 1回の実行は6分、カスタム関数は30秒が上限なので、処理を途中で止めて次の実行へ回す作りにする
  • 429が出たら呼び出しの間隔を空け、毎日当たるなら有料枠と費用の上限を一緒に決める

Augueでは、Google Workspace with GeminiとGASを組み合わせた業務の自動化を、対象の作業の選定から、社内で保守できる形での引き渡しまで支援しています。ご興味がある方は是非ご相談ください。

AIツールを、業務の成果につなげませんか?

Augue AX サービス資料 Service Guide

使い方を覚えたあとは、どの業務にどう組み込むかで成果が変わります。自社の業務に合う使い方を、無料相談で一緒に考えます。

資料をダウンロードする無料相談に申し込む

よくある質問

プログラミングの経験が無くても、GASでGeminiを使えますか?

記事のコードを貼り付けて動かすところまでは、経験が無くても進められます。つまずきやすいのは、動かした後に列の位置や指示文を自社の表に合わせて直す場面です。Geminiに「この表のB列を読んでC列に書く形に直して」と頼めば直したコードを出してくれますが、何をしているかを1行ずつ説明させ、意味が分かってから使うと、止まったときに自分で原因を探せます。

ChatGPTのAPIをGASから呼ぶ場合と何が違いますか?

GASから外部のAPIを呼ぶ仕組みは同じで、送り先のURL・キーの渡し方・応答の形が違うだけです。違いが出るのは契約と管理のほうです。Gemini APIはGoogleアカウントとGoogle Cloudのプロジェクトで管理でき、Google Workspaceを使っている会社では請求や権限の管理をGoogleの中にまとめられます。どちらを選ぶかは、社内で使ってよいと決めているサービスと、送ってよい情報の決まりで判断します。

Google Workspace with Geminiを契約していれば、APIの料金はかかりませんか?

かかります。Google Workspace with Geminiは、GmailやスプレッドシートなどのGoogleの画面からGeminiを使うための契約で、GASからGemini APIを呼ぶ分は別に、APIの無料枠か従量課金で扱われます。画面で使う分とAPIで使う分を分けて考え、APIを業務で使うならGoogle AI Studioで課金を設定したプロジェクトのキーを使います。

作ったスクリプトを社内のほかの人に使わせるときに、気をつけることは?

スプレッドシートを共有すると、編集権限のある人はApps Scriptのコードもスクリプトプロパティも見られます。APIキーを見せたくない場合は、キーを持つスクリプトを情シスなど管理する人のアカウントで動かし、利用者には結果の書かれたシートだけを共有します。あわせて、誰がどのスクリプトを作り、どのキーを使っているかを一覧にしておくと、退職や異動のときにキーを止め忘れずに済みます。