スプレッドシートにAIの頭脳を組み込む
SECTION 09
スプレッドシートの全行をAIが処理し、人間は結果を確認するだけ。これが GAS x Gemini の世界です。
SECTION 09
本研修では Google AI Studio を使用します。 セットアップが簡単で、無料枠で十分に学習できます。本番環境への移行時は Vertex AI を検討してください。
SECTION 09
console.cloud.google.com にアクセスし、Googleアカウントでログイン。
ヘッダーのプロジェクト選択 → 「新しいプロジェクト」をクリック。
「APIとサービス」→「ライブラリ」で「Generative Language API」を検索して有効化。
「APIとサービス」→「認証情報」→「認証情報を作成」→「APIキー」。
SECTION 09
aistudio.google.com を開く。
左メニューの「Get API key」を選択。
プロジェクトを選択してキーを作成。
SECTION 09
GCP_PROJECT_ID値: 取得したAPIキーを貼り付け
SECTION 09
UrlFetchApp.fetch() はGASから外部APIを呼び出すための標準メソッドです。HTTPリクエストを送信し、レスポンスを受け取ります。SECTION 09
candidates が空の場合があります(安全フィルターでブロックされた場合など)。本番コードでは必ずチェックしましょう。SECTION 09
「あなたはビジネスメールの専門家です」のように、AIの立場を指定します。
「JSON形式で」「箇条書きで」など、期待する出力形式を明記します。
入力と出力の例を1〜2個示すと、精度が大幅に向上します(Few-shot)。
業務で今すぐ使える GAS x Gemini の4つの型
SECTION 09
A列の長文テキストをGeminiで要約し、B列に結果を書き込みます。
| A: 原文 | B: 要約 | C: ステータス |
|---|---|---|
| 長い議事録テキスト... | 予算承認と新製品... | 完了 |
| お客様からの問い合わせ... | 納期確認の依頼... | 完了 |
| 来週のイベント企画... | (処理中...) |
ポイント: ステータス列で処理済みを管理。途中でエラーが起きても、再実行すれば未処理分だけ処理されます。
Utilities.sleep(1000) は必須です。APIへの連続アクセスを防ぎ、レート制限エラーを回避します。SECTION 09
| A: 問い合わせ内容 | B: カテゴリ |
|---|---|
| 商品Xの在庫はありますか? | 製品問い合わせ |
| 先日届いた商品が破損して... | クレーム |
| 100個注文した場合の価格は? | 見積もり依頼 |
| ログインできなくなりました | 技術サポート |
SECTION 09
| A: 日本語 | B: English |
|---|---|
| お世話になっております | Thank you for your continued support |
| ご確認をお願いいたします | Please review and confirm |
| 来週の会議に出席可能です | I am available to attend next week's meeting |
Google翻訳との違い: Geminiは文脈を理解した自然な翻訳ができます。ビジネス文書の翻訳では特に差が出ます。
SECTION 09
"株式会社ABCの田中太郎です。メールはtanaka@abc.co.jpまでお願いします。電話は03-1234-5678です。"
| B: 氏名 | C: 会社名 | D: メール |
|---|---|---|
| 田中太郎 | 株式会社ABC | tanaka@abc.co.jp |
本番運用で困らないための必須テクニック
SECTION 09
| コード | 意味 | よくある原因 | 対策 |
|---|---|---|---|
| 400 | Bad Request | リクエストの形式が不正、プロンプトが長すぎる | JSONの構造を確認、プロンプトを短くする |
| 403 | Forbidden | APIキーが無効、APIが未有効化 | APIキーの再確認、APIの有効化を確認 |
| 429 | Too Many Requests | レート制限に到達(短時間に大量リクエスト) | Utilities.sleep() で待機時間を追加 |
| 500 | Internal Error | Google側のサーバーエラー | 時間をおいてリトライ |
Utilities.sleep() で適切な待機時間を設けることが必須です。SECTION 09
なぜ指数的に増やすのか? サーバーが混雑しているとき、すぐにリトライすると状況が悪化します。待機時間を倍々に増やすことで、サーバーの回復を待ちつつ確実にリトライできます。
SECTION 09
| 制限項目 | 無料枠 |
|---|---|
| RPM(1分あたりリクエスト) | 15 RPM |
| RPD(1日あたりリクエスト) | 1,500 RPD |
| TPM(1分あたりトークン) | 100万 TPM |
Utilities.sleep(4000) 以上の待機が安全です。SECTION 09
| 温度 | 特徴 | 用途 |
|---|---|---|
| 0.0〜0.3 | 安定・決定的 | 分類、抽出、翻訳 |
| 0.4〜0.7 | バランス型 | 要約、文章生成 |
| 0.8〜1.0 | 創造的・多様 | アイデア出し |
SECTION 09
トークンはAIが処理するテキストの単位です。日本語では約1文字 = 1〜2トークンが目安です。
| 処理内容 | 件数 | 月額目安 |
|---|---|---|
| 短文要約 | 100件/日 | 無料枠内 |
| メール分類 | 500件/日 | 〜$5 |
| 長文翻訳 | 1,000件/日 | 〜$20 |
コスト削減のコツ:
maxOutputTokens を設定して出力を制限GAS x Gemini を実際に動かしてみよう
SECTION 09
プロパティ名: GCP_PROJECT_ID
testGemini 関数を実行実行する関数のドロップダウンで testGemini を選択。
SECTION 09
| A列: テキスト |
|---|
| 今日の会議で来月の予算が承認されました |
| 新しいプロジェクトの立ち上げが決定しました |
| 顧客満足度調査の結果が大幅に改善しました |
| サーバーの移行作業が来週に延期されました |
| 営業チームの四半期目標を達成しました |
SECTION 09
ハンズオン2のコードに try-catch とリトライを追加します。
APIエラーでスクリプト全体が止まるのを防ぎます。
一時的なエラーなら自動で復旧します。
2秒 → 4秒 → 8秒と待機時間を増やします。
失敗した場合「ERROR」と記録し、後で確認できます。
SECTION 09
到達点: 非エンジニアでもメニューから「一括要約」を選ぶだけでAI処理が実行できる環境が完成しました。
SECTION 09
処理結果・エラーをログシートに記録。問題発生時の原因特定を容易にします。
毎朝9時にデータ処理、毎週月曜にレポート生成など、トリガーで完全自動化。
usageMetadata のトークン数を記録し、想定外のコスト増を早期検知します。
定期的にキーを再生成し、古いキーを無効化。セキュリティリスクを最小化します。
1回のバッチ処理を50件までに制限。GASの実行時間制限(6分)に対応。
本番データに触る前に、少量のテストデータで動作確認を必ず行いましょう。
SECTION 09
GASの基礎 + AI連携を身につけた今、あらゆるGoogleサービスを自動化する準備が整いました。
SECTION 09
「シートのデータをAIで処理し、結果をシートに戻す」-- この基本パターンを応用すれば、あらゆる業務を自動化できます。
お疲れさまでした!次はGmailの自動化ワークフローに進みます。