AI AgentをGoogle Sheetsに接続する

Piotr Grudzień
公開日 読了時間:約21分
AI AgentをGoogle Sheetsに接続する

はじめに

AI Agentはサイト上のすべての訪問者と会話します。購入する準備ができている人もいれば、Agentが答えられない質問をする人、まだ提供していない機能を求める人、デモを希望する人もいます。デフォルトでは、これらはすべてチャットが閉じると失われます。

このガイドでは、AI AgentをGoogle Sheetsに接続する方法を説明します。これにより、そのような各タイミングが、チームがすでに使用しているシートの行になります。**Zapierもwebhookもエンジニアも不要です。**必要なものは2つです。

仕組みはAI Actionsです。これは、Agentが会話中に実行できるカスタムHTTPリクエストです。Quickchat AIには、シートとスターター記録アクションを作成するワンクリックのGoogle Sheets接続があります。そこから形を整え、必要なだけレポートを追加できます。最後には、4つの動作するレポートができ、それぞれを自分でテスト済みになります。

これは長く、正確な手順ガイドです。AI Actionsの正規リファレンスは、docs.quickchat.ai/ai-agent/actionsのドキュメントにあります。カスタムアクションの他の実例については、AI AgentをHubSpotに接続して連絡先、取引、チケットを記録する、AI ActionsでSlack通知を送信する、またはグループを管理するAI Telegram botを構築するを参照してください。

作成するもの

4つのレポートを、1つのGoogle Sheet内のそれぞれ独自のタブに書き込みます。

ReportTabWhen the Agent writes a row
リードLeads訪問者が購入意向を示し、メールアドレスを共有したとき
未回答の質問UnansweredAgentが事実に関する質問に答えられないとき
フィードバックFeedback訪問者が機能をリクエストする、不具合を報告する、または称賛を伝えるとき
デモリクエストDemos訪問者がデモまたは通話を依頼するとき

以下のスクリーンショットは、架空の会社であるTideline向けに作成されたテストAgentのものです。Tidelineは、SaaS企業向けのサブスクリプション分析プラットフォームです。この会社は例を中立に保つための架空のものですが、ここに示すすべての会話と行は、実際の返信パイプラインを実行している実際のAgentによって生成されました。手順に沿って進める際は、自社の情報を使用してください。

Google Sheets連携の仕組み

この機能全体は、1つの考え方に基づいています。AI Actionは説明付きのHTTPリクエストであり、Google Sheetの行はそのようなリクエストの1つです。

AI Actionの構成: 名前、いつ呼び出すかを示す説明、Agentがチャットから埋めるパラメータ、送信するリクエスト AI Actionには4つの部分があります。descriptionは、モデルがそのアクションを呼び出すかどうかを判断するために読むものです。parametersは、会話から埋める値です。

以降の内容を理解しやすくするために、いくつかの事実を確認します。

  • **行の書き込みは1回のAPI呼び出しです。**Google Sheetsには、タブに行を追加するappendエンドポイントがあります。各レポートは、そのエンドポイントへのPOSTであり、本文に行の値を含めます。
  • 列は固定ではありません。列はアクションが送信する内容です。アクションの本文とシートのヘッダー行を編集することで列を決めるため、同じ連携でリード、不具合報告、その他任意の内容を記録できます。
  • **最小権限のアクセスです。**Google接続はdrive.fileスコープのみを要求します。これは、アプリが作成したファイルにのみアクセスを許可します。Driveの他の部分を見ることはできません。
  • Agentが認証情報を見ることはありません。リクエストにはAuthorizationヘッダーが含まれ、その値は{{google_sheets_access_token}}というプレースホルダーです。Quickchat AIは、モデルが処理を終えた後に、そのプレースホルダーへ実際の自動更新トークンを挿入します。トークンがプロンプトに入ることはありません。
  • 2つの組み込み変数は、パラメータとして定義しなくても任意のアクションで使用できます。{{conversation_url}}はInbox内の会話へのディープリンクで、{{conversation_channel}}は訪問者が使用したチャネル(Webウィジェット、Slack、WhatsAppなど)です。

ステップ1: AI Agentを作成し、ナレッジを与える

Quickchat Agentの動作は、2つの場所から決まります。Identity(メインプロンプト)と、回答に使用するナレッジです。Actions & MCPsは、Google Sheetへの書き込みなど、Agentが実行できることを拡張する場所です。このガイドでは、Identity(このステップとステップ4)およびActions & MCPs(ステップ2、3、6)を使用し、すべてをAI Preview(ステップ5)でテストします。

登録後、左サイドバーでIdentityを開きます。AI Main Promptは、Agentが何であり、どのように振る舞うべきかを記述する場所です。製品について短く正確に説明し、Agentが述べられるべき事実(プラン、価格、存在する連携など)をナレッジに入れて、質問に直接答えられるようにします。

AI Agent名とAgentの役割を説明するAI Main Promptが表示されたIdentityページ Agentの名前とメインプロンプト: 製品とAgentの振る舞いを短く正確に説明します。ステップ4で、このプロンプトの末尾にレポート用ブロックを追加します。

そのプロンプトをすべて自分で書く必要はありません。このガイドのすべてのプロンプト、アクション説明、リクエスト本文はコピー&ペースト用のブロックとして提示されています。そのため、入力するのではなく貼り付けます。ステップ4でこの画面に戻り、レポート指示を追加します。

ステップ2: Google Sheetsを接続する

サイドバーでActions & MCPsを開き、Add Actionをクリックして、Google Sheetsを選択します。

Google Sheetsオプションが表示されたAdd Actionメニュー Actions & MCPs、次にAdd Action、次にGoogle Sheets。

接続ダイアログが開きます。アクセスを許可する前に、ワンクリックで設定される内容が表示されます。Drive内の新しいGoogle Sheetと、リード向けにプリセットされた、すぐに使える記録アクションです。現在のプロビジョニングではスターターが有効化されるため、確認または再利用する間はオフにします。

Connectをクリックします。Googleが使用するアカウントを尋ね、その後、許可する権限を尋ねます。要求されるスコープはdrive.fileのみです。これにより、連携は作成したファイルだけを扱えるようになり、Driveの他の部分にはアクセスできません。

Quickchat AIで続行するアカウントを尋ねるGoogleアカウント選択画面 Google自身の画面です。シートを保存するDriveのアカウントを選択します。次の画面でdrive.file権限を付与します。この権限により、連携は作成したファイルだけを扱えます。

承認すると、Actions & MCPsページに戻ります。Quickchat AIは次を実行済みです。

  1. Google Drive内に、1つのタブ(Leads)とヘッダー行を持つスプレッドシートを作成しました。
  2. そのシートにすでに接続された、log_lead_to_google_sheetという単一の有効なAI Actionを追加しました。

このスターターアクションは、通常の、完全に編集可能なAI Actionです。連携はリード獲得向けにプリセットしています。接続ビューがスターターを識別できるように、log_lead_to_google_sheetという名前は維持してください。必要に応じて、パラメータ、本文、説明を変更します。このガイドでは、これをオフにして確認し、ステップ6でさらに3つを作成する前に、最初のレポートとして再度有効化します。

ステップ3: リードアクションを確認して有効化する

自動作成されたlog_lead_to_google_sheetアクションは、Custom Actionsの下に表示され、作成時点では有効です。いったんオフにし、再度有効にする前に開いて設定を確認します。これは他のすべてのレポートが従うテンプレートなので、全体を理解しておく価値があります。

4つのレポートアクションを一覧表示するActions and MCPsページ 4つのレポートアクションです。最初のlog_lead_to_google_sheetだけが作成済みです。他の3つはステップ6で追加します。

アクションの上部には、名前と、Agentが収集するパラメータがあります。

リードアクションの名前とパラメータ Agentが会話から埋める、アクション名とパラメータです。

API Endpointセクションまでスクロールします。Quickchat AIがシートとこのアクションを同時に作成したため、URLにはすでにスプレッドシートのIDが入力済みで、メソッドはPOST、ヘッダーも設定済みです。

リードアクションのAPI Endpointセクション: POSTメソッド、実際のシートIDを含む完全なエンドポイントURL、AuthorizationおよびContent-Typeヘッダー 完全なエンドポイントURLには、すでにシートのIDが含まれています。Query Paramsは空のままです。valueInputOption=RAW設定はURLに含まれています。Authorizationヘッダーにはトークンのプレースホルダーが入ります。

APIドキュメントに書かれている{SPREADSHEET_ID}は、実際に動作するプレースホルダーではありません。接続時にQuickchat AIがシートを作成し、その実際のIDをこのアクションのURLに直接書き込んでいるため、このフィールドにはすでに完全なアドレスが表示されています。

https://sheets.googleapis.com/v4/spreadsheets/<your sheet ID>/values/Leads:append?valueInputOption=RAW

valueInputOption=RAWは維持してください。これは値を文字どおり挿入するため、=や+で始まるメッセージがスプレッドシートの数式として解析されません。ステップ6で、この正確なURLを他の3つのレポートにコピーし、タブ名だけを変更します。そのため、IDを手作業で探す必要はありません。

ヘッダーはすべてのレポートで同じです(上のスクリーンショットから読み取れます)。

KeyValue
AuthorizationBearer {{google_sheets_access_token}}
Content-Typeapplication/json

次は、列を柔軟にする部分です。API Endpointセクション内で、Bodyタブに切り替えます。リクエスト本文は1行で、各セルが1つのパラメータです。本文内のセルの順序が、シート内の列の順序になります。

{ "values": [[ "{{email}}", "{{what_they_asked}}", "{{conversation_url}}", "{{conversation_channel}}" ]] }

API EndpointセクションのBodyタブ。1セルにつき1パラメータのJSON形式のリクエスト本文を表示 リクエスト本文はBodyタブにあります。各{{parameter}}が1つのセルであり、セルはシートの列と同じ順序で並びます。

つまり、列は連携によってハードコードされていません。この本文とタブのヘッダー行によって定義されます。本文とヘッダーを変更すれば、レポートが記録する内容も変わります。実際のリード会話がこの行にどのように対応するかを示します。

会話が行に対応する仕組み: 訪問者のメールアドレスと質問がemailおよびwhat_they_askedパラメータになり、2つの組み込み変数がリンク列とチャネル列を埋める 訪問者の発言がパラメータに対応し、パラメータが順番に列へ対応します。2つの組み込み変数は自動的に埋められます。

パラメータは、Agentが会話から埋めるフィールドです。各パラメータのdescriptionは、そこに何を入れるべきかをAgentに伝えます。

ParameterRequiredDescription
emailYesリードの勤務先メールアドレス。必須: まだ共有されていない場合は、記録する前に訪問者に尋ねること。
what_they_askedYes訪問者自身の言葉による、価格またはプランに関する質問の短い要約。

最後に、アクション説明です。これは最も重要な単一のフィールドです。モデルがそもそもアクションを呼び出すべきかどうかを判断するために読むのがこの説明だからです。以下のバージョンは、Agentが実際にメールアドレスを取得するまで行を書き込まないよう調整されています(理由の詳細は調整セクションで説明します)。

営業チームがフォローアップできるように、適格な営業リードを記録してください。このアクションのトリガーは、訪問者が購入意向を示しながらメールアドレスを提供することです(価格、プラン、費用、導入時期、予算について質問した場合)。訪問者が実在するメールアドレスを今まさに提供したターンでのみ、このアクションを呼び出してください。その正確なメールアドレスをemailパラメータに入れてください。訪問者が購入意向を示しているが、まだメールアドレスを提供していない場合は、このアクションを呼び出してはいけません。回答したうえで、まずメールアドレスを尋ねてください。メールアドレスが提供されていないターンでは絶対に呼び出さず、空または作り上げたメールアドレスで呼び出してはいけません。

thinking message(Noting your interest for our team...)は、アクション実行中に訪問者に表示される短いステータスです。設定に問題がなければ、アクションをオンにします。

ステップ4: レポート指示をプロンプトに追加する

アクション説明は、各レポートがいつ実行されるかを決めます。プロンプトは、それとは別の補完的な役割を担います。レポート作成がAgentの業務の一部であることを伝え、4つのレポートが互いに干渉しないようにします。

Identityに戻り、このブロックをAI Main Promptの末尾に貼り付けます。4つすべてのレポートを扱うため、貼り付けるのは1回だけです。

## チームへのレポート
チームのGoogle Sheetに有用な情報を記録するアクションがいくつかあります。これらはバックグラウンドで静かに実行されます。これはあなたの業務の一部であり、任意ではありません。以下の状況のいずれかに該当する場合は、返信と同じターンで対応するアクションを呼び出してください。同じターンで訪問者に回答し、アクションを呼び出すことができます。スプレッドシート、記録、またはこれらのアクションについて訪問者に言及してはいけません。迷った場合は記録してください。
- 購入意向。訪問者が価格、プラン、導入時期、予算について質問した場合。質問に回答し、その後リードを取得してください。まだメールアドレスを共有していない場合は、チームがフォローアップするための最適なメールアドレスのみを尋ね、そのターンでは何も記録しないでください。実際にメールアドレスを取得したターン(または共有を拒否されたターン)でのみ、リードアクションを呼び出してください。各リードは1回だけ記録してください。
- ナレッジギャップ。事実に関する質問に完全には答えられない場合(たとえばセキュリティ、認証、ポリシー、法務、特定の機能など)、訪問者が人間を求めている場合、または訪問者が不満そうな場合。未回答の質問として記録してください。価格に関する質問はリードアクションで処理し、機能リクエストはフィードバックアクションで処理するため、それらを未回答として重複して記録しないでください。
- フィードバック。訪問者が、提供していない機能または連携をリクエストする、不具合を報告する、または強い称賛を述べる場合。製品フィードバックとして記録してください。
- デモリクエスト。訪問者が明示的にデモ、通話、または営業担当者との会話を依頼する場合。メールアドレスを収集し、名前と会社名が提供された場合はそれらも収集してから、デモリクエストを記録してください。

AgentのIdentityの下、AI Main Promptの末尾に貼り付けられたレポートブロック AgentのIdentityの後、メインプロンプトの一番末尾にブロックを貼り付けます。4つすべてのレポートを扱うため、追加するのは1回だけです。

ステップ5: リードレポートをテストする

実際の訪問者が見る前に、動作を確認します。AI Previewは、訪問者と同じようにAgentとチャットできるライブの対話型手段です。(後でSimulationを使用して、多数のテストメッセージを一括で再生し、返信を評価することもできます。レポートの調整方法を参照してください。)どちらもテストチャネルであるため、Channel列には実際のチャネルではなく、previewまたはsimulationと表示されます。

サイドバーでAI Previewを開き、実際の訪問者が行うような会話をします。価格について質問し、その後メールアドレスを共有します。

AI Previewでの価格に関する会話。AgentがGrowthプランの質問に答え、訪問者がメールアドレスを共有している AgentはナレッジからGrowthプランの質問に回答します。訪問者のメールアドレスを取得すると、バックグラウンドでリードを記録します。

Agentが何をしたかを正確に確認する

アクションが実行されたかどうかを推測する必要はありません。その会話をInboxで開き、Agentの返信の下に表示されるアクション呼び出しを展開します。どのアクションが実行されたか、送信した正確な値、成功したこと(200)が表示されます。

Inbox内の会話トランスクリプト。記録されたアクション呼び出し、そのパラメータ、200ステータスが表示されている 会話内で、Agentのアクション呼び出しが完全に記録されます。アクション名、送信したパラメータ、結果が表示されます。

書き込まれた行はLeadsタブに入ります。

Quickchat Leadsシートに取り込まれたリード リードがシートに直接書き込まれます。各レポートには下部に独自のタブがあります。

Conversation linkはInbox内の完全な会話を開くため、フォローアップ担当者が文脈を確認できます。Channel列には、訪問者がどこから来たかが表示されます。

各アクションには、Actionsページ上に独自のcall logもあります。総呼び出し回数、成功率、平均レイテンシ、各呼び出しのパラメータとレスポンスが表示されます。ここで、Agentが正しいアクションを正しい値で呼び出していることを、時間をかけて確認できます。

リードアクションのcall log。総呼び出し回数、成功率、平均レイテンシ、最近の成功した呼び出しが表示されている アクション単位のcall logです。実行頻度、成功頻度、各呼び出しが送受信した内容を確認できます。

これで一連の流れは完了です。会話、Agentによる判断、アクション呼び出し、実行可能な行です。残り3つのレポートも同じパターンに従います。

ステップ6: 残り3つのレポートを追加する

各レポートには2つのものが必要です。シート内のタブと、そこに追記する新しいAI Actionです。

3つのタブを追加する

シート(Google SheetsダイアログのOpen sheetリンク)を開き、3つのタブ(Unanswered、Feedback、Demos)を追加します。それぞれ、以下の各レポートで示すヘッダー行を設定します。

各アクションを作成する

Actions & MCPsを開き、カスタムHTTP Requestアクションを追加して入力します。メソッド(POST)とヘッダーは、リードアクションと同一です。URLについては、リードアクションから完全なURLをそのままコピーし、タブ名だけを変更します(LeadsをUnanswered、Feedback、またはDemosに変更)。そのURLにはすでにスプレッドシートのIDが含まれているため、他に接続するものはありません。

https://sheets.googleapis.com/v4/spreadsheets/<your sheet ID>/values/Unanswered:append?valueInputOption=RAW

レポートごとに変わるのは、タブ名、パラメータ、本文、説明だけです。

レポート2: 未回答の質問

最も有用なレポートです。Agentは、どこでナレッジが不足しているか、どの見込み客に回答を提供できなかったかを正確に知らせます。これはコンテンツロードマップになります。

このレポートは、Agentが本当に答えを持っていない場合にのみ機能するため、そのギャップは実在する必要があります。テストAgentを設定するときは、フラグを立てさせたい事実を意図的に除外します。Tideline Agentはプランと連携については知っていますが、セキュリティ認証については何も知らないため、SOC 2の質問は述べられたはずの事実ではなく、本当のギャップです。すべての事実をナレッジに読み込ませると、このレポートが検出するものはなくなります。

タブUnanswered、ヘッダー行:

QuestionWhy we couldn’t answerEmailConversation linkChannel

パラメータ:

ParameterRequiredDescription
questionYes訪問者自身の言葉による質問。
reasonYes完全には回答できなかった理由を簡潔に記述します。ナレッジにない、人間の対応が必要、または訪問者が不満だった、など。
emailNo訪問者が共有した場合のメールアドレス。共有していない場合は空欄にします。

本文:

{ "values": [[ "{{question}}", "{{reason}}", "{{email}}", "{{conversation_url}}", "{{conversation_channel}}" ]] }

説明(thinking message: Flagging this for our team...):

ナレッジから事実に関する質問に完全には回答できない場合、訪問者が人間と話したいと求めた場合、または訪問者が不満そうな場合は、必ずこれを呼び出してください。返信で、要求された情報を持っていない、見つけられない、確認できない、または確信がないと述べる場合は、同じターンでこのアクションを必ず呼び出さなければなりません。部分的な回答をした場合でも、ギャップを記録してください。完全に回答した質問、価格に関する質問(リードアクションで処理)、または機能リクエスト(フィードバックアクションで処理)では呼び出さないでください。

Agentが答えを持っていないセキュリティ質問でテストしました。

SOC 2に関する質問を確認できないとAgentが述べ、チームに共有すると提案している Agentは確認できないことを明確に述べ、質問をチームに共有します。

Unansweredタブに書き込まれる行:

Unansweredタブに記録された未回答のSOC 2質問 ギャップが、理由と会話へのリンクとともに記録されます。この訪問者はメールアドレスを共有していないため、Emailセルは空です。

レポート3: フィードバック

「Xに対応していますか?」や「Yができるとよい」といった内容が、顧客自身の言葉付きで優先順位付けされたバックログになります。

タブFeedback、ヘッダー行:

TypeSummaryWhy / use caseEmailConversation link

パラメータ:

ParameterRequiredDescription
typeYes次のいずれか: feature request、bug、praise。
summaryYes訪問者自身の言葉によるフィードバックの短い要約。
contextNo言及されている場合、その理由または使用方法。
emailNo訪問者が共有した場合のメールアドレス。共有していない場合は空欄にします。

本文:

{ "values": [[ "{{type}}", "{{summary}}", "{{context}}", "{{email}}", "{{conversation_url}}" ]] }

説明(thinking message: Passing this to our product team...):

訪問者が機能、能力、または連携をリクエストする場合(現在提供しているかどうかにかかわらず)、不具合や問題を報告する場合、または製品について強い称賛を述べる場合に、これを呼び出してください。typeは次のいずれかに設定してください: feature request、bug、praise。中立的な情報提供の質問では呼び出さないでください。

会社が提供していない連携のリクエストでテストしました。

AgentがネイティブQuickBooks連携はないと説明し、リクエストを記録している Agentは存在する連携を述べ、明確に非対応であることを伝え、リクエストをフィードバックとして記録します。

Feedbackタブに書き込まれる行:

Feedbackタブに記録されたQuickBooks機能リクエスト 各行は種類(feature request、bug、またはpraise)で分類され、訪問者の言葉で要約され、会話にリンクされます。

レポート4: デモリクエスト

誰かが明示的に話したいと希望した場合、構造化された、営業がすぐ使える行を取得します。

タブDemos、ヘッダー行:

NameEmailCompanyUse caseConversation link

パラメータ:

ParameterRequiredDescription
nameNo訪問者が共有した場合の名前。共有していない場合は空欄にします。
emailYesチームが連絡するための最適なメールアドレス。
companyNo共有された場合の会社名。
use_caseNo言及されている場合、達成したいことまたは話し合いたいこと。

本文:

{ "values": [[ "{{name}}", "{{email}}", "{{company}}", "{{use_case}}", "{{conversation_url}}" ]] }

説明(thinking message: Setting up your demo request...):

訪問者が明示的にデモ予約、通話のスケジュール、または営業担当者との会話を依頼した場合にのみ、これを呼び出してください。まずメールアドレスを収集し、名前と会社名が提供された場合はそれらも収集してください。誰かがメールアドレスを共有しただけ、または価格について質問しただけでは呼び出さないでください。一般的な購入意向にはリードアクションを使用してください。

明示的なデモリクエストでテストしました。

Agentがデモリクエストを確認し、訪問者の詳細を記録している Agentはデモを確認し、名前、会社、関心領域を記録します。

Demosタブに書き込まれる行:

名前、メールアドレス、会社、ユースケースを含むDemosタブに記録されたデモリクエスト 構造化された、営業がすぐ使える行です。誰か、どこで働いているか、何を見たいかが分かります。

4つすべてのレポートは1つのスプレッドシートに書き込みます。各レポートは1つのタブを持ち、会話が発生するにつれて埋まります。

レポートを調整する方法

上記のレポートは最初からうまく動作したわけではありません。修正プロセスこそ、コピーする価値が最も高い部分です。自分のレポートを正しく動かす方法だからです。ループは毎回同じです。

  1. 訪問者を演じます。AI Previewを開き、実際の訪問者が行う会話をそのまま実行します。
  2. 返信だけでなく結果を読みます。シートのタブとアクションのcall log(どちらもステップ5で示しました)を開き、書き込まれた行と、Agentが実際に送信したパラメータを確認します。
  3. **ギャップを見つけます。**記録された内容と、記録されるべきだった内容を比較します。
  4. 1つだけ変更します。アクションのdescription(アクションがいつ実行されるかを制御します)、またはプロンプトブロックを編集します。ただし、何が効果を生んだか分かるよう、一度に1つだけ変更します。
  5. 同じ会話を再実行し、行が正しくなったことを確認します。

そのループから得られた2つの変更が最も重要でした。どちらも不適切な行から直接見つかりました。

Simulationで見つかった2つの修正: 空のメールアドレスで早すぎるタイミングで記録されたリードは、メールアドレスを必須にし、それをトリガーにすることで修正。何も記録されなかったナレッジギャップは、強い表現で修正 重要だった2つの変更です。いずれも会話を実行し、それが生成した行を読むことで見つかりました。

修正1: リードが早すぎるタイミングで実行された。最初の説明は、トリガーを質問に結び付けていました。「訪問者が価格、プラン、費用について尋ねたら呼び出す」という内容です。価格に関する会話を実行すると、Agentは回答し、その同じターンでリードを記録しました。訪問者がメールアドレスを提供する前です。行は[ (empty), "Growth plan cost", link, simulation ]として入りました。フォローアップ手段のないリードです。修正は、トリガーを質問から連絡先情報へ移すことでした。現在の説明では、訪問者が実際にメールアドレスを提供したターンでのみアクションを呼び出すようにし、emailパラメータを必須にしています。同じ会話を再実行すると、Agentは価格の質問に回答し、そのターンでは何も記録せず、訪問者がアドレスを共有した後にだけ行を書き込みました。

修正2: ナレッジギャップが記録されなかった。未回答質問レポートは、実行させるのが最も難しいレポートでした。最初の説明(「質問に答えられない場合に呼び出す」)はほとんど何もしませんでした。製品がSOC 2認証を受けているかを尋ねると、Agentは正しく確認できないと述べ、チームへ案内しましたが、何も記録しませんでした。モデルにとっては、「分かりません」と言うこと自体が完全な回答のように感じられるため、ギャップも記録するよう促す残りのシグナルがありません。修正は強い表現でした。現在の説明では、返信でAgentが確認できない、または確信がないと述べる場合は、同じターンでアクションをMUST呼び出すとしています。これにより、同じSOC 2の質問で、正直な回答とUnansweredタブの行の両方が生成されました。このレポートは4つの中で最も判断に依存します。明示的な訪問者シグナルではなく、Agentが自分自身のギャップに気づくことに依存するためです。訪問者がフォローアップも求めている場合に、最も安定して実行されます。

プロンプトブロックがすること、しないこと。アクション説明は、各レポートがいつ実行されるかを決めます。ステップ4のプロンプトブロックは、3つの別々の役割を持ちます。レポートが任意ではないことをAgentに伝えること、重複するケースを分離すること(価格質問はリードであり、未回答の質問ではない)、そしてリードを記録する前にメールアドレスを尋ねる方針を設定することです。テストから得られた正直な注意点として、訪問者が興味を示しているがメールアドレスを提供していない場合に、Agentが能動的にメールアドレスを尋ねるかどうかは実行ごとにばらつきます。そのため、そこに依存しないでください。メールアドレスが空のリードを作らない保証は、プロンプトではなく、必須のemailパラメータとトリガー文言です。

Simulationで大規模にテストする

レポートが動作したら、サイドバーのTesting配下にあるSimulationで、回帰していないことを確認できます。テストメッセージのデータセットを与えると、それらをすべてAgentに再生し、evaluator(各返信を、あなたが書いたルーブリックに照らして1から5の尺度で採点するLLM)が回答を採点します。これは、多数のケースにわたってAgentの発言品質の低下を検出するための適切なツールです。

4メッセージのデータセットに対するsimulation実行: 各テストメッセージ、Agentの返信、evaluatorによる1から5のスコアと根拠 4つのレポートシナリオに対するsimulation実行です。各行にはテストメッセージ、Agentの返信、evaluatorのスコアと理由が表示されます。ここでは4つすべてが5点中5点で合格しています。

重要な制限が1つあります。evaluatorが見るのは返信テキストだけであり、スプレッドシートは見ません。正しい行が正しいタブに入ったことは確認できません。それには、上記の調整ループが依存しているとおり、ステップ5のシートとアクションcall logを使用します。

**運用上の注意。**すべてのテスト会話は、Agentの月間AIメッセージを使用します。テスト中にAgentが突然「unavailable」の通知を返した場合、それはバグではなく上限に達したということです。

本番公開

4つのアクションをオンにし、プロンプトブロックを配置したら、実際のチャネルにAgentをデプロイします。追加で設定するものはありません。同じアクションがWebウィジェット、Slack、WhatsApp、その他のチャネルで実行され、Channel列には各行の発生元が記録されます。チームはシートがリアルタイムで埋まるのを確認でき、すべての行が、それを生み出した会話に直接リンクされます。

よくある質問

AI agentをGoogle Sheetsに接続するのにコードは必要ですか?

いいえ。Google Sheets接続はワンクリックで完了し、必要なアクション説明、プロンプト、リクエスト本文はすべて、このガイドにコピー&ペースト用のブロックとして記載されています。コードを書いたりホストしたりする必要はありません。

AI AgentをGoogle Sheetsに接続するのにZapierやwebhookは必要ですか?

いいえ。Quickchat AIは、会話中にAgentが実行するネイティブHTTPリクエストであるAI Actionを通じて、Google Sheetsに直接接続します。Zapierもwebhookサービスも、間に入るエンジニアも不要です。ワンクリックでシートと最初の記録アクションが作成されます。

Google Driveのデータは安全ですか?

はい。この連携が要求するOAuthスコープはdrive.fileのみです。これは、アプリ自身が作成したファイル、たとえば作成されたシートにのみアクセスを許可します。Drive内の他のファイルを読み取ったり変更したりすることはできず、アクセストークンがAIモデルに公開されることもありません。

リード以外のものも記録できますか?

はい。この連携は汎用ロガーです。スターターアクションは一般的な用途であるリード向けにプリセットされていますが、列はアクションの本文とシートのヘッダー行だけで決まります。そのため、このガイドで示すように、未回答の質問、機能リクエスト、デモ予約、その他任意の内容を記録するよう編集できます。

Google Sheetsへの記録はどのチャネルで動作しますか?

すべてのチャネルで動作します。同じアクションは、Agentがデプロイされている場所(Webウィジェット、Slack、WhatsAppなど)で実行されます。また、Channel列には各行がどこから来たかが記録されます。

費用はかかりますか。また、テストはAIメッセージを消費しますか?

無料で開始でき、Google Sheets接続自体に追加費用はありません。テスト中にAI PreviewやSimulationで実行するものを含め、すべての会話はプランの月間AIメッセージ数にカウントされます。そのため、大量のテストは本番チャットと同じ枠を消費します。

スターターの記録アクションを削除した場合はどうなりますか?

元に戻せます。Add Actionを開き、もう一度Google Sheetsを選択してReconnectを使用します。連携がワンクリック設定を再実行し、log_lead_to_google_sheetアクションを再作成し、既存のシートを再利用します(2つ目のシートは作成されません)。すでに接続済みの場合、接続ダイアログにはその再接続オプションが直接表示されます。

記録アクションが削除された後の接続ダイアログ。再接続してアクションを再追加する選択肢を表示 スターターアクションがなくなっている場合、ダイアログがそのことを示し、ワンクリックで再作成する手順を提示します。シートは接続されたままです。

製品コミュニティの実例については、DiscordからGoogle Sheetsへのフィードバックチュートリアルを参照してください。これはチームレビュー用の明示的な送信内容を記録し、文書化済みの制限と不足している回答を区別し、返信だけでなく記録内容もテストします。

まとめ

AI Actionは説明付きのHTTPリクエストであり、Google Sheetの行はそのようなリクエストの1つです。**Googleを一度接続し、スターターアクションをリードレポートに整え、レポートブロックを貼り付け、その後、必要な追加レポートごとにタブとアクションを追加します。**列は自分で決められます。固定テンプレートではなく、アクションの本文で決まるからです。この投稿の設定とプロンプトは、ここに示した行を生成するために使用したものです。そのため、それらをコピーし、自社製品の詳細に置き換え、同じテストを実行して、実際の訪問者の前に出す前にAgentが動作することを確認できます。

このガイドをブックマークしておいてください。AI Actionsの継続的に更新されるリファレンスは、docs.quickchat.ai/ai-agent/actionsのドキュメントにあります。また、AI ActionsのAPIリファレンスには完全なフィールド一覧があります。