記事自動生成ツールを作る事を例にして、チャットGPTのGPTs(ジーピーティーズ)を使って、GoogleスプレットシートとAPI接続する方法をご紹介。

GPTsでmy GPTを作成する

チャットGPTでmy GPTを新規で作成する。

schemaにスクリプトを設置

以下スクリプトをactionのschemaに設置する。

{
"openapi": "3.1.0",
"info": {
"title": "Get name data",
"description": "Get lastname and firstname by id",
"version": "v1.0.0"
},
"servers": [
{
"url": "https://script.google.com"
}
],
"paths": {
"ここにデプロイしたURLの /macros以下 のアドレスを設定": {
"get": {
"description": "Get lastname and firstname by id",
"operationId": "GetNameByid",
"parameters": [
{
"name": "id",
"in": "query",
"description": "ID No.",
"required": true,
"schema": {
"type": "string"
}
}
],
"deprecated": false
}
}
},
"components": {
"schemas": {
"NameResponse": {
"type": "object",
"properties": {
"lastname": {
"type": "string"
},
"firstname": {
"type": "string"
}
}
}
}
}
}

作成後は右上のアップデータボタンでアップデートする。

プロンプトの内容と順序を作成

Googleスプレットシートで目的に応じたスクリプトの内容と順番を構成する。

拡張機能のapps scriptを開く。

以下スクリプトをコピペする。

function doGet(e) {
// リクエストからパラメータを取得
console.log("start GPTs Custom Actions API test");
console.log("e: " + JSON.stringify(e));
var searchQuery = e.parameter.id;
console.log("e.parameter.id: " + e.parameter.id);

// 4桁の数字かどうかをチェック
if (!searchQuery || !/^\d{4}$/.test(searchQuery)) {
console.log("bad format: " + searchQuery);
return ContentService.createTextOutput(
JSON.stringify({ "error": "Invalid request. Please provide a 4-digit number." })
).setMimeType(ContentService.MimeType.JSON);
}

// スプレッドシートの準備
var sheet = SpreadsheetApp.openById('ここにスプレッドシートIDを貼り付ける').getSheetByName('シート1');
var data = sheet.getDataRange().getValues();
console.log("format OK");

// スプレッドシートを検索
for (var i = 1; i < data.length; i++) { // 2行目から開始
if (data[i][0].toString() === searchQuery) {
console.log("hit: " + i);
console.log("last: " + data[i][1]);
console.log("first: " + data[i][2]);
// 見つかった場合、JSONとして返す
return ContentService.createTextOutput(
JSON.stringify({ "lastname": data[i][1], "firstname": data[i][2] })
).setMimeType(ContentService.MimeType.JSON);
}
}
console.log("not found");
// 一致するデータが見つからない場合
return ContentService.createTextOutput(
JSON.stringify({ "error": "No data found for the provided number." })
).setMimeType(ContentService.MimeType.JSON);
}

新しいデプロイを作成し、URLをコピーする。(初回はアクセル許可を求められるため許可する。公開は全員にする。)

GPTの設定

先ほどコピーしたURLをschema内に設置したスクリプト内のpaths”:{後にペースト(https://script.google.comは後で削除する)する。

introductionsに『いかなる場合も必ず以下スプレットシートの1001番のプロンプトをはじめに実行し、最終的に1005番までプロンプトを実行して。』のような指示内容とGoogleスプレットシートのURLを入力しておく。

おすすめの記事