ステップ1: APIキーを保存
ステップ2: テキスト生成コード
コードの詳細解説

💻 GASからGemini APIを使ってテキスト生成

取得したAPIキーを使って、実際にテキスト生成を試してみましょう

📝 ステップ1:APIキーをGASに保存

まず、取得したAPIキーをGASのプロパティサービスに保存します。 プロパティサービスは、GASでキーと値のペアを安全に保存できる機能です。

APIキーをコード内に直接書いてしまうと、コードを共有したときに他人に見られてしまう危険があります。 プロパティサービスを使えば、APIキーを安全に管理できますよ。

💡 プロパティサービスとは?

プロパティサービスは、GASでキーと値のペアを永続的に保存できる機能です。 APIキーのような機密情報を安全に保存するのに最適で、コードには直接書かずに済みます。

コード例

function setGeminiApiKey() {
  // プロパティサービスを取得
  const scriptProperties = PropertiesService.getScriptProperties();
  
  // APIキーを保存(YOUR_API_KEY_HEREを、実際のAPIキーに置き換えてください)
  scriptProperties.setProperty('GEMINI_API_KEY', 'YOUR_API_KEY_HERE');
  
  // 保存完了メッセージ
  Logger.log('APIキーを保存しました');
}

実行手順

1

GASエディタを開く

Googleスプレッドシートから、拡張機能Apps Script を選択して、 GASエディタを開きます。

2

上記のコードを貼り付ける

エディタに上記のコードを貼り付けます。 'YOUR_API_KEY_HERE' の部分を、前のセクションで取得した実際のAPIキーに置き換えてくださいね。

3

関数を実行

画面上部の「実行」ボタンをクリックして、 setGeminiApiKey 関数を実行します。

初回実行時は、権限の承認を求められます。 「許可を確認」→ 自分のGoogleアカウントを選択 → 「許可」をクリックしてください。

4

保存確認

実行が完了したら、「表示」「ログ」を開いて、 「APIキーを保存しました」というメッセージが表示されているか確認しましょう。

✅ APIキーの保存が完了しました!

これで、APIキーが安全にプロパティサービスに保存されました。 この関数は初回のみ実行すればOKです。次回からは、保存されたAPIキーを読み込んで使用します。

🚀 ステップ2:テキスト生成コードを作成

それでは、実際にGemini APIを使ってテキストを生成するコードを作成してみましょう。 以下のコードをGASエディタに追加してください。

function generateTextWithGemini() {
  // プロパティサービスからAPIキーを取得
  const scriptProperties = PropertiesService.getScriptProperties();
  const apiKey = scriptProperties.getProperty('GEMINI_API_KEY');

  // プロンプト(AIに送る指示)
  const prompt = '日本の観光名所を3つ教えてください。';

  // APIエンドポイント
  const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;

  // リクエストペイロード
  const payload = {
    "contents": [
      {
        "parts": [
          {
            "text": prompt
          }
        ]
      }
    ]
  };

  // リクエストオプション
  const options = {
    'method': 'POST',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  // API呼び出し
  try {
    const response = UrlFetchApp.fetch(url, options);
    const result = JSON.parse(response.getContentText());

    // 生成されたテキストを取得
    const generatedText = result.candidates[0].content.parts[0].text;
    Logger.log(generatedText);

    return generatedText;
  } catch (error) {
    Logger.log('エラー: ' + error.message);
    return null;
  }
}

実行してみましょう

  1. 上記のコードをGASエディタに追加します
  2. 画面上部の関数選択で generateTextWithGemini を選択
  3. 「実行」ボタンをクリック
  4. 「表示」「ログ」を開いて、生成されたテキストを確認

うまくいけば、日本の観光名所が3つ表示されるはずですよ!

🔍 コードの詳細解説

それでは、上記のコードがどのように動いているのか、詳しく見ていきましょう。 各部分の役割を理解することで、自分で応用できるようになりますよ。

1️⃣ APIキーの取得

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

プロパティサービスから、先ほど保存したAPIキーを取得しています。 getProperty('GEMINI_API_KEY')で、 保存したキーを読み込むことができます。

2️⃣ プロンプトの設定

const prompt = '日本の観光名所を3つ教えてください。';

AIに送る指示(プロンプト)を設定しています。 このプロンプトを変更することで、さまざまなタスクを実行できます。 例えば、「メール文章を作成してください」や「この文章を要約してください」など、 用途に応じて変更しましょう。

3️⃣ APIエンドポイント

const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;

Gemini APIのエンドポイント(アクセス先)を指定しています。 gemini-proはモデル名で、 テキスト生成に特化したモデルです。 URLの最後に、取得したAPIキーを付けることで、認証が行われます。

4️⃣ リクエストペイロード

const payload = {
  "contents": [
    {
      "parts": [{ "text": prompt }]
    }
  ]
};

APIに送信するデータの形式を指定しています。 contentsの中に、 プロンプトを含めることで、AIがその指示に基づいてテキストを生成します。 この構造は、Gemini APIの仕様で決まっています。

5️⃣ API呼び出しとレスポンス処理

const response = UrlFetchApp.fetch(url, options);
const result = JSON.parse(response.getContentText());
const generatedText = result.candidates[0].content.parts[0].text;

UrlFetchApp.fetch()で、 APIにリクエストを送信します。 返ってきたレスポンスはJSON形式なので、JSON.parse()で解析します。

最後に、result.candidates[0].content.parts[0].text で、生成されたテキストを取り出しています。 この階層構造は、Gemini APIのレスポンス形式に従っていますよ。

6️⃣ エラーハンドリング

try {
  // API呼び出し処理
} catch (error) {
  Logger.log('エラー: ' + error.message);
  return null;
}

try-catch文で、 エラーが発生した場合の処理を記述しています。 APIキーが間違っていたり、ネットワークエラーが発生した場合は、 エラーメッセージがログに記録されます。

💡 応用のヒント

プロンプトを変更することで、さまざまなタスクに対応できます。例えば:

  • 「以下の文章を英語に翻訳してください」
  • 「以下の商品情報から、魅力的な説明文を作成してください」
  • 「以下の問い合わせ内容を、『商品』『配送』『その他』に分類してください」

📝 このセクションのまとめ

皆さん、GASからGemini APIを使ったテキスト生成について理解できましたでしょうか?

  • APIキーはプロパティサービスに保存して、安全に管理します
  • UrlFetchApp.fetch()でAPIにリクエストを送信し、レスポンスを受け取ります
  • プロンプトを変更することで、さまざまなタスクに対応できます
  • エラーハンドリングを実装して、予期しない問題に対処します

次のセクションでは、この基本を応用して、実際のビジネスシーンで使える実用例を紹介していきます。 商品説明文の自動生成や、問い合わせ内容の分類など、実践的な活用方法を一緒に学んでいきましょう!

次のセクションへ:実用的な活用例 →