GPTsとスプレッドシートを連携してDB追記が簡単なカスタマーサポートbotの作り方
この記事ではスプレッドシートに回答のジャンルと回答内容を記録しておくことで、質問の内容に応じてジャンルを選び、そのジャンルの中から回答を選び、質問者に回答を送るというGPTsの作り方を紹介します。
回答のジャンルを間に挟むことによって、回答の精度の向上とインプットできる情報量の増加を目的としています。
実装の手順
1.スプレッドシートを用意して拡張機能からApps Scriptを立ち上げる
スプレッドシートにはテスト用のデータを格納しておいてください。
2.Apps Scriptに以下のコードを貼り付け、スプレッドシートのIDの部分を自分のスプシIDに変更、シート名も自分のシート名に変更
get category.gs
function doGet() {
// スプレッドシートのIDとシート名を設定
var spreadsheetId = "スプシIDをここに入力"; // ここにスプレッドシートのIDを設定
var sheetName = "シート名"; // ここにシート名を設定
// スプレッドシートからデータを取得
var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
var data = sheet.getDataRange().getValues();
// カテゴリーのリストを作成(重複排除)
var categories = new Set();
for (var i = 1; i < data.length; i++) {
categories.add(data[i][1]); // カテゴリーは2列目にあると仮定
}
// JSON形式でレスポンスを返す
return ContentService.createTextOutput(JSON.stringify({ "categories": Array.from(categories) }))
.setMimeType(ContentService.MimeType.JSON);
}
3.新しいApps Scriptを立ち上げる
4.以下のコードを貼り付け、スプレッドシートのIDの部分を自分のスプシIDに変更、シート名も自分のシート名に変更
serch from ID.gs
function doGet(e) {
var postData = JSON.parse(e.postData.contents);
var searchId = postData.id;
// スプレッドシートのIDとシート名を設定
var spreadsheetId = "あなたの"; // ここにスプレッドシートのIDを設定
var sheetName = "data"; // ここにシート名を設定
// スプレッドシートからデータを取得
var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
var data = sheet.getDataRange().getValues();
// 検索結果を格納する変数
var searchResult = null;
// スプレッドシートを検索
for (var i = 1; i < data.length; i++) {
if (data[i][0].toString() === searchId) { // IDは1列目にあると仮定
searchResult = data[i][2]; // contentは3列目
break;
}
}
// JSON形式でレスポンスを返す
if (searchResult !== null) {
return ContentService.createTextOutput(JSON.stringify({ "content": searchResult }))
.setMimeType(ContentService.MimeType.JSON);
} else {
return ContentService.createTextOutput(JSON.stringify({ "error": "No matching ID found." }))
.setMimeType(ContentService.MimeType.JSON);
}
}
5.それぞれのApps Scriptを保存した後デプロイ
Ctrl+Sで保存した後に、まず実行を押す。
そして、アクセス承認をした後に実行されることを確認する。
その後右上のデプロイ→新しいデプロイを選択し、
1.左上の歯車マークからwebアプリを選択
2.アクセスできるユーザーを全員に変更
3.デプロイを押してアクセスを承認
この操作を2つのApps Script両方で行い、それぞれのURLをメモしておく
※どちらがget category,search from IDか分かるように保存してください。
6.GPTsの設定をする
7.Actionsの設定をする
openapi: "3.0.0"
info:
version: 1.0.0
title: User Register API
description: Get categories and get answers from question
servers:
- url: https://script.google.com
paths:
ここに保存したURLのうち、get categoryの方の/macros以下を入れる:
get:
summary: Get First Category
operationId: GetFirstCategory
tags:
- category
responses:
'200':
description: First category retrieved successfully
content:
application/json:
schema:
type: object
properties:
category:
type: string
ここに保存したURLのうち、searcg from IDの方の/macros以下を入れる:
get:
summary: Get Content By Category
operationId: GetContentByCategory
tags:
- content
parameters:
- in: query
name: genre
required: true
schema:
type: string
description: The category to get content for
responses:
'200':
description: Content for the specified category retrieved successfully
content:
application/json:
schema:
type: object
properties:
content:
type: array
items:
type: string
上記のコードに、ここに保存したURLのうち、◯◯の方の/macros以下を入れるという部分があるので、そこに保存したURLの/macros以下を入れる。
例:/macros/s/AKfycby5GB4BGBOM7wcj3SoPBYi4HXYDbsM72NXW0a17Cy89phITgPp8nlHqYPoSIr_p_djdpw/exec
8.動作テスト
カテゴリー一覧が取得できることを確認したら、GPTに質問をして、保存されている内容を回答してくれるか確認する。
まとめ
以上が実装のやり方になります!
こちらの「GPTsにログイン機能を実装する方法」のnoteでは、このnoteの内容を応用したログイン機能を実装する方法と、非技術者の方でもGASとGPTsの連携する方法が分かるように丁寧な解説、よくあるエラーコードと解決策、OpenAPIやGASを書いてくれる便利なプロンプトまで載せてあります。
今後もGPTsの作り方やGPTs開発の記事を書いていく予定なので、よければフォローよろしくお願いします!
Twitter:@hiro_manabu
この記事が気に入ったらサポートをしてみませんか?