GPTsでデータベースを管理しよう!②:スプシとGASとAPI
こんにちは、遊花です。前回の記事では、GPTsにデータベースを組み込むことの重要性をお話ししました。今回は、それを実現する方法として、Google スプレッドシート(スプシ)とGoogle Apps Script(GAS)を使う方法を、できるだけわかりやすくご紹介します。
はじめに
この記事は、プログラミングの経験がない方や、技術的な知識があまりない方向けに書いています。難しそうに感じても大丈夫です。一歩ずつ、楽しみながら学んでいきましょう。
重要なのは、基本的な概念を理解することです。具体的なコードの作成はAIに任せることができますが、AIとうまくコミュニケーションを取るためには、基本的な仕組みを知っておく必要があります。
システム全体の概要
まずは、GPTsでデータベースを管理するシステム全体の概要を図で確認しましょう。
この図は、Google スプレッドシート(スプシ)、Google Apps Script(GAS)、API、GPTs、そしてユーザーの関係性を表しています。それぞれの役割と相互作用を以下に説明します:
Googleスプレッドシート(スプシ):
データベースとして機能します。
情報を表形式で保存し、管理します。
Google Apps Script(GAS):
スプレッドシートのデータを読み書きします。
データをAPIとして外部に公開する役割を果たします。
API:
GASで作成されたデータの窓口として機能します。
外部(この場合はGPTs)からのアクセスを可能にします。
GPTs:
AIアシスタントとして、ユーザーとのやり取りを行います。
必要に応じてAPIを通じてデータを取得し、ユーザーの質問に答えます。
ユーザー:
GPTsに質問を投げかけ、回答を受け取ります。
データの流れ
```mermaid
sequenceDiagram
actor User
participant GPTs
participant API
participant GAS
participant Spreadsheet
Note over User,Spreadsheet: GETリクエストのシナリオ
User->>GPTs: 質問する
GPTs->>API: GETリクエスト
API->>GAS: GETリクエスト転送
GAS->>Spreadsheet: データ取得
Spreadsheet-->>GAS: データ返送
GAS-->>API: GETレスポンス
API-->>GPTs: データ返送
GPTs->>User: 回答する
Note over User,Spreadsheet: POSTリクエストのシナリオ
User->>GPTs: データ更新を要求
GPTs->>API: POSTリクエスト
API->>GAS: POSTリクエスト転送
GAS->>Spreadsheet: データ更新
Spreadsheet-->>GAS: 更新確認
GAS-->>API: POSTレスポンス
API-->>GPTs: 更新結果
GPTs->>User: 更新完了を報告
```
ユーザーがGPTsに質問します。
GPTsは必要に応じてAPIにリクエストを送信します。
APIは、GASを通じてGoogleスプレッドシートからデータを取得します。
取得したデータは、API → GPTsの順でレスポンスとして返されます。
GPTsは、受け取ったデータを基にユーザーに回答を提供します。
また、データの更新が必要な場合は、GASがGoogleスプレッドシートのデータを更新します。
この図を理解することで、GPTsがどのようにしてデータベース(Google スプレッドシート)と連携し、ユーザーの質問に答えているかが分かります。以降の説明では、この図の各要素について詳しく見ていきます。
Googleスプレッドシートをデータベースとして使う
Google スプレッドシートは、表形式でデータを管理できるので、簡単なデータベースとして使えます。そうすることで、無料でGPTsにCRUD操作を行うことが可能となるわけです。
👇データベースは何?CRUD操作?という方は前回の記事を読んでくださいね。
スプレッドシートの構造
ブック:
スプレッドシート全体のことです。
1つのファイルに相当します。
シート:
ブック内の1つのタブページのことです。
1つのブックに複数のシートを作成できます。
各シートに名前をつけることができます(例:「シート1」「顧客リスト」「注文履歴」)。
セル:
シート内の1つの箱のことです。
データを入力する最小単位です。(A2のセル、B3のセルといった呼び方をします)
データベースとしての対応関係
1つのシートが1つのテーブルになります。
各行が1つのレコードになります。
各列が1つのフィールドになります。
例えば、「顧客リスト」というシート名で以下のようなデータを作成できます:
シート名の重要性
シート名は、後でGASでプログラムを書くときに重要になります。シート名を指定することで、特定のシートのデータを操作できるようになります。
例えば、GASで「顧客リスト」シートのデータを取得するコードは以下のようになります。これにより、スプシとGASを連動させることができます。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("顧客リスト");
このように、シート名を使ってデータにアクセスするので、わかりやすい名前をつけることが大切です。
シートIDとは?
シートを扱う上で重要となるのが「シートID」です。シートIDは、スプレッドシートを一意に識別するための文字列で、URLに含まれています。
シートIDの見つけ方
Google スプレッドシートを開きます。
ブラウザのアドレスバーに表示されるURLを確認します。
URLは以下のような形式になっています:
https://docs.google.com/spreadsheets/d/[ここがシートID]/edit#gid=0
4.[ここがシートID] の部分が、そのスプレッドシートのシートIDです。
例えば、URLが https://docs.google.com/spreadsheets/d/1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P7/edit#gid=0
の場合、 シートIDは 1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P7 となります。
シートIDの重要性
シートIDは、以下のような場面で重要な役割を果たします:
GASでの操作: スプレッドシートを開いて操作する際に使用します。
javascript
API連携: APIエンドポイントを作成する際、どのスプレッドシートのデータを操作するかを指定するために使用します。
GPTs設定: GPTsの設定で、どのスプレッドシートと連携するかを指定する際に必要となります。
セキュリティ上の注意点
シートIDは、スプレッドシートへのアクセス権を持つ人なら誰でもデータを操作できるキーとなります。そのため、以下の点に注意が必要です:
シートIDを公開の場で共有しないでください。
APIの利用制限やアクセス権の設定を適切に行ってください。
重要なデータを扱う場合は、スプレッドシートの共有設定を確認し、必要最小限の人だけがアクセスできるようにしてください。
主キー(プライマリーキー)って何?
主キー(プライマリーキー)は、各レコードを一意に識別するためのフィールドです。上の画像では「顧客ID」が主キーです。主キーは重複しない唯一の値であり、各レコードを特定するために使用されます。
Google Apps Script(GAS)って何?
Google Apps Script(GAS)は、Googleが提供している便利なツールです。これを使うと、Google スプレッドシートやGmailなどのGoogleサービスを自動化したり、新しい機能を追加したりできます。
GASの特徴
Googleサービスと仲良し: GASは、Googleの色々なサービスとすぐに連携できます。
クラウド上で動く: 特別なソフトをパソコンにインストールする必要がありません。
無料: 個人で使う分には、お金はかかりません。
定期的に動かせる: 「毎日午前9時に実行する」といった設定ができます。
GASで使う重要な概念
AIとの会話に置いて伝えたいことをうまく理解してもらうために必要になります。知らないとスムーズに指示が伝わらず苦労しますが、全部を一度に覚えなくても大丈夫です。心配な人は、この記事を保存しておきましょう。
スクリプト:
GASで書かれたプログラムのことです。
拡張子は .gs です。
関数:
スクリプト内の1つのまとまった処理のことです。
例:function getData() { ... }
トリガー:
スクリプトを自動的に実行するための設定です。
例:「毎日午前9時に実行する」「スプレッドシートが編集されたときに実行する」など
サービス:
GASから利用できるGoogleの機能のことです。
例:SpreadsheetApp(スプレッドシートを操作するためのサービス)
プロパティ:
スクリプトで使用する設定値や秘密の情報を保存する場所です。
APIキーなどの機密情報を保存するのに使います。
GASの基本的な使い方
Google スプレッドシートを開く
「拡張機能」→「Apps Script」を選ぶ
スクリプトエディタが開くので、そこにコードを書く
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
Logger.log(data); // データをログに出力
}
4.「実行」ボタンを押すと、書いたプログラムが動きます
このように、GASを使うことで、スプレッドシートのデータを自動的に操作したり、外部からアクセスできるようにしたりできます。
APIって何?
API(エーピーアイ)は、ソフトウェアやサービス同士が会話するための「窓口」のようなものです。
APIのイメージ
レストランを想像してみてください。
お客さん(あなたのプログラム)が注文(リクエスト)をします。
ウェイター(API)がその注文をキッチン(サーバー)に伝えます。
キッチンで料理(データ処理)をします。
ウェイターが料理(レスポンス)をお客さんに持ってきます。
このように、APIは異なるプログラムやサービス間での「注文」と「配達」を担当するウェイターのような役割を果たします。
APIの基本的な仕組み
リクエストとレスポンス:
リクエスト:「こんな情報が欲しい」と伝えること
レスポンス:リクエストに対する答え
エンドポイント: APIにアクセスするための特別なアドレス(URL)です。 例:https://api.example.com/users(ユーザー情報を取得するURL)
HTTPメソッド: リクエストの種類を指定します。主なものは:
GET: データを取得したいとき
POST: 新しいデータを作りたいとき
PUT/PATCH: 既存のデータを更新したいとき
DELETE: データを削除したいとき
認証: APIを使う人が正しい権限を持っているか確認します。 例:パスワードを入力するようなもの
データフォーマット: データをやり取りする際の形式です。主にJSONという形式が使われます。
GASでAPIを作る際の重要な概念
こちらは、実際のスクリプトエディタに使われている単語になります。機能の仕組みをなんとなくでも理解しておくと便利です。
doGet()関数:
GETリクエストを処理するための関数です。
データの取得に使います。
doPost()関数:
POSTリクエストを処理するための関数です。
データの作成や更新に使います。
ContentService:
APIのレスポンスを作成するためのサービスです。
JSONデータを返すのに使います。
ウェブアプリとして導入:
スクリプトをAPIとして公開する方法です。
URLが発行され、そこにアクセスすることでAPIを利用できます。
これらの概念を使って、GASでAPIを作成し、GPTsからアクセスできるようにします。
JSONって何?
JSON(ジェイソン)は、データを表現するための形式の一つです。人間にも読みやすく、コンピューターも理解しやすい形式になっています。
例えば、先ほどの田中さんのデータをJSONで表すと、こんな感じになります:
{ "顧客ID": "001", "名前": "田中さん", "年齢": 25, "趣味": "読書" }
GASとAPIを使ってGPTsにデータベースを組み込む
ここまでの説明を踏まえて、GPTsにデータベース機能を組み込む方法を考えてみましょう。
Google スプレッドシートをデータベースとして使う: スプレッドシートの各行を1つのレコードとして扱います。
GASでAPIを作る: GASを使って、スプレッドシートのデータを操作するAPIを作ります。 これにより、外部からスプレッドシートのデータにアクセスできるようになります。
GPTsからAPIを呼び出す: GPTsの設定で、作成したAPIを呼び出すようにします。 これで、GPTsがデータベース(スプレッドシート)とやり取りできるようになります。
AIを活用したAPI開発の流れ
GASを使ってAPIを開発する際、AIを効果的に活用することで、プログラミングの詳細な知識がなくても強力なAPIを作成することができます。以下に、AIを活用したAPI開発の基本的な流れを紹介します。
1. GASコードの作成
まず、AIにGASコードの作成を依頼します。例えば、次のように指示を出します:
「Google スプレッドシートの'顧客リスト'シートからデータを取得し、JSONとして返すGASコードを作成してください。」
AIは、このような指示に基づいて適切なGASコードを生成します。
2. OpenAPI仕様書の作成
GASコードが完成したら、同じチャット内でAIにOpenAPI仕様書の作成を依頼します。例えば:
「先ほど作成したGASコードに基づいて、OpenAPI仕様書を作成してください。」
AIは、作成したGASコードの機能を理解し、それに対応するOpenAPI仕様書を生成します。
OpenAPI仕様書って何?
OpenAPI仕様書は、APIの設計や動作を記述するための標準的な方法です。簡単に言えば、APIの取扱説明書のようなものです。
OpenAPI仕様書の重要性
共通言語: 開発者やAIツールが同じ理解でAPIを扱えるようになります。
自動生成: この仕様書を基に、クライアントコードやドキュメントを自動生成できます。
可視化: API設計の全体像を把握しやすくなります。
OpenAPI仕様書の基本構造
OpenAPI仕様書は通常、YAML形式またはJSON形式で書かれています。主な要素は以下の通りです:
info: APIのタイトルやバージョンなどの基本情報
paths: APIのエンドポイントとそのメソッド(GET, POST等)の定義
components: APIで使用するデータモデルの定義
具体例
例えば、顧客リストAPIのOpenAPI仕様書の一部はこんな感じになります:
openapi: 3.0.0
info:
title: 顧客リストAPI
version: 1.0.0
paths:
/customers:
get:
summary: 顧客リストの取得
responses:
'200':
description: 成功
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Customer'
components:
schemas:
Customer:
type: object
properties:
id:
type: string
name:
type: string
age:
type: integer
hobby:
type: string
この仕様書は、/customersというパスでGETリクエストを送ると、顧客情報の配列が返ってくることを定義しています。
OpenAPI仕様書の活用
OpenAPI仕様書について詳しく知る必要はありません。「APIの設計図」程度の認識で大丈夫です。具体的な記述方法は、必要に応じてAIに聞いてみましょう。重要なのは、この仕様書があることで「GPTsにAPIを組み込み、GASと連携しスプシのデータをCRUD操作できる」ということです。
まとめ
AIを活用することで、GASコードの作成からOpenAPI仕様書の生成まで、効率的にAPI開発を進めることができます。プログラミングの詳細な知識がなくても、基本的な概念を理解し、AIと適切にコミュニケーションを取ることで、強力なAPIを作成し、GPTsに組み込むことが可能になります。
作成中につまづきそうなワードや、難しい部分を解説したつもりではありますが、今回の説明では足りなかった部分もあると思います。AIに聞きながらぜひデータベースを構築したGPTsを作成してみてください。
👇試しに簡単なのを作ってみる人は、こちらをお勧めします。その後オリジナルを作りたくなったら、私の記事を再び読んでみてください。