【Google AppSheet備忘録】Automation編1:AppSheet × Gemini APIでテキスト生成

AppSheet

AppSheetのBot(Automation)を使って、ユーザーの入力をGoogleの生成AI「Gemini API」に送信し、返ってきた文章をアプリに反映させる仕組みを作ったときの備忘録です。
このページでは、Apps Scriptのコードと、AppSheet側のAutomation(Bot)の設定を中心に記録しています。

スポンサーリンク

この記事でやること

  • ユーザーの入力をきっかけに、Gemini APIで文章を生成
  • Apps Script経由でAPIとやり取りする
  • 結果をAppSheetのテーブルに自動反映

使ったもの

構成役割
AppSheetユーザー入力とBot実行
Google Sheetsデータ保存
Google Apps ScriptGemini APIと通信
Gemini API(Google AI Studio)テキスト生成

Apps Scriptのコード

AppSheetから渡されたプロンプト(質問やキーワード)をGemini APIに送って、テキストを返す関数です。

function createTextWithGemini(prompt) {
  const apikey = PropertiesService.getScriptProperties().getProperty("GEMINI_API_KEY");
  const MODEL = "gemini-2.0-flash";
  const url = "https://generativelanguage.googleapis.com/v1beta/models/" + MODEL + ":generateContent?key=" + apikey;

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

  const options = {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    payload: JSON.stringify(requestBody)
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    const responseData = JSON.parse(response.getContentText());
    const generatedText = responseData.candidates[0].content.parts[0].text;
    return generatedText;
  } catch (error) {
    Logger.log("エラーが起きました:" + error);
  }
}

ポイント

  • APIキーはスクリプトプロパティ(GEMINI_API_KEY)に登録しておく
  • モデルは軽量な gemini-2.0-flash を使用(用途によって変更可)

AppSheet側の設定

① トリガー(Botのイベント)

対象テーブルで「入力列(例:質問)」が変更されたときにBotを起動。
イベントタイプは 「Updates」

実行例

② プロセス(Functionの設定)

Botのステップで、Apps Scriptを呼び出す。
ステップタイプは 「Call a script function」

  • 関数名:createTextWithGemini
  • 引数(prompt):"質問内容: " & [質問] など、AppSheet式で構成

実行例

③ 結果を列に書き込む

次のステップで、返ってきたテキストをテーブルに保存。
Index(StepResults, 1) を使うと、関数の戻り値を取り出せる。

実行例

この記事ではまったこと

どこで止まっているのか分からない問題

AppSheetとGASを連携すると、処理が止まったときに「AppSheet側なのかGAS側なのか」がすぐには分かりませんでした。
そのため、以下の2点を常に確認する必要があります。

  • ① GASの実行ログ:「実行」メニュー → 「実行ログ(旧:コンソールログ)」や「実行数」タブ
  • ② AppSheetのMonitor: Manage → Monitor タブ →Automation MonitorのLaunch automation monitorをクリック

実行ログの出力は必須

GASの中では、必ず Logger.log()console.log() を使って、
どこまで処理が進んだか、どんな値が入っているかを出力するようにしておくとデバッグが圧倒的に楽になります。

// 値の確認
Logger.log("受け取ったプロンプト:" + prompt);

// レスポンス確認
Logger.log("Gemini APIの返答:" + generatedText);

エラー時に catch 節で内容を出力しておくのも重要です。

} catch (error) {
  Logger.log("エラーが起きました:" + error);
}

その他注意点

  • AppSheetから外部APIには直接POSTできない(Webhook除く)
  • プロンプトの作り方(与える文の構成)次第で、AIの返答の精度が大きく変わる

メモ

今回は、AppSheetとGemini APIをつなぐためのGASとAppSheetのAutomationをまとめました。
アプリとしての完成形(例:英単語クイズやレビュー生成など)は、書籍で出版予定です。

以下の書籍では画像認識をさせたものを紹介しています。手順も詳しく説明していますのでぜひ手に取って見てください。

コメント

タイトルとURLをコピーしました