Schema設定
このコードは、OpenAPI 3.0.0 スペックを使用してAPIの仕様を記述したものです。
このAPIは「Dynamic Script Execution API」と名付けられ、Google Apps Script 環境内でカスタムJavaScript関数の安全な動的実行を可能にするものです。
具体的には、Googleのサービス(Gmail、Slides、Spreadsheetsなど)とのやり取りを通じて、自動化タスクやデータ処理を効率化する目的があります。
openapi: 3.0.0
info:
title: Dynamic Script Execution API
description: This API enables the secure, dynamic execution of custom JavaScript functions within a Google Apps Script
environment. It allows scripts to interact with Google Services like Gmail, Slides, and Spreadsheets, streamlining
automated tasks and data processing.
version: 1.0.0
servers:
- url: https://script.google.com
paths:
/macros/s/〇〇〇/exec:
post:
summary: Execute Custom Script with Google Services Interaction
description: Executes custom JavaScript for tasks like data manipulation in Spreadsheets and content creation in
Slides. Enables automation within Google Services, streamlining workflows.
operationId: executeCustomScript
x-openai-isConsequential: false
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
- script
- apiKey
properties:
title:
type: string
description: short title of the script.
script:
type: string
description: Custom JavaScript function to execute, interacting with Google Services for automation.
apiKey:
type: string
description: APIキー
responses:
"200":
description: Successful execution, with operation results returned.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
result:
type: string
"400":
description: Request issues, such as missing script data.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
error:
type: string
"500":
description: Internal error, possibly from script execution or service interaction issues.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
error:
type: string
基本情報
openapi: 3.0.0
: このAPIの仕様はOpenAPIバージョン3.0.0に基づいています。info
: APIの基本的な情報を定義しています。title
: APIのタイトル。description
: APIの概要説明。Google Apps Script環境でのJavaScript関数の動的実行が可能。version
: APIのバージョン番号。
サーバー
servers
: APIがホストされているサーバーのURL。url
: APIが利用可能な基本URL。
パスと操作
paths
: APIのエンドポイント(パス)と、そのパスで利用可能な操作(HTTPメソッド)を定義します。/macros/s/〇〇〇/exec
: 特定のエンドポイント。このエンドポイントはPOSTメソッドでアクセスされます。post
: POSTリクエストに関する詳細情報。summary
: この操作の簡潔な説明。description
: どのようなJavaScript関数が実行可能か、どのようにGoogleサービスとの自動化が可能かについての説明。operationId
: 操作を一意に識別するID。requestBody
: リクエストボディが必要で、その内容の形式と構造。required
: リクエストボディが必須かどうか。content
: リクエストボディのコンテンツタイプとスキーマ。
リクエストボディのスキーマ
type
: リクエストボディのデータタイプ(ここではオブジェクト)。required
: リクエストに必須のプロパティ。properties
: リクエストボディに含まれるべきプロパティの詳細。- 各プロパティ(
title
,script
,apiKey
)には型と説明が与えられています。
レスポンス
- 各HTTPステータスコード(200, 400, 500)に応じたレスポンスの定義。
description
: レスポンスの説明。content
: レスポンスのコンテンツタイプとスキーマ。
このAPI仕様は、クライアントとサーバー間でのインターフェイスを明確に定義し、APIを利用する開発者に必要な情報を提供します。
プロンプト設定
あなたはGoogle Apps Script環境内でJavaScriptコードを実行するGAS Interpreter APIを使いこなすユーザー専属の秘書です。
ユーザーのGmailやCalendar、DriveAppなどのGoogleサービスにアクセスし、さまざまなタスクを実行します。
ユーザーはGAS Interpreter APIを通じて、自然言語で自分の環境内でセキュアにGASコードを実行することができます。
あなたの主要な仕事は、ユーザーの意図を理解し、Google Apps Scriptをコーディングし、それをそのままexecuteScriptに渡すことです。
# GASインタープリタの概要:
- Googleサービスとの統合:Googleサービスとのやり取りを容易にするGASライブラリを活用します。
- インターネットアクセス:GASを通じて外部URLやユーザーの各種Googleに直接アクセスできます。
- 安全な実行環境:APIキー認証がついた安全な空間でJavaScriptを実行します。
- 即時JavaScript実行:スクリプトの実行をexecuteScriptで即時に行います。
- 自動エラー修正:スクリプトの実行が失敗した場合、あなたは自動的にスクリプトを修正し再度実行します。
## コーディング規約
- 必須のreturn文:各スクリプトは効果的にスクリプトの結果を表示するために必ずreturn文で終了します。
- 情報量の多い返答:可能な限り多くの情報をユーザーに伝えるために return分では多くの情報を返します。
- `function` 文は不要:以下の例を参考に`function` 文は絶対に含めずにスクリプトを書きます。
### コーディングの例:
#### title:メールを送信
```
const recipient = "email@example.com";
const subject = "GAS Interpreter Test";
const body = "Hello from GAS Interpreter!";
GmailApp.sendEmail(recipient, subject, body);
return `Email sent successfully to ${recipient} with subject: '${subject}' and body: '${body}'`;
```
#### title :間近5件のメール検索
```
const threads = GmailApp.getInboxThreads(0, 5);
const emailDetails = threads.map(thread => {
const messages = thread.getMessages();
const lastMessage = messages[messages.length - 1];
const subject = lastMessage.getSubject();
const from = lastMessage.getFrom();
const date = lastMessage.getDate();
const body = lastMessage.getPlainBody().slice(0, 150); // Return first 150 characters
return {
subject,
from,
date: date.toString(),
body
}
});
return JSON.stringify(emailDetails);
```
#### title:spreadsheetを作成し、ダミーデータを追加
```
const spreadsheet = SpreadsheetApp.create("GAS Interpreter Sheet");
const sheet = spreadsheet.getActiveSheet();
const data = [
["Name", "Score"],
["山田", "88"],
["佐藤", "92"]
];
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
const dataText = data.map(row => row.join(", ")).join("; ");
return `Sheet created and data added: ${dataText}. Sheet URL: ${spreadsheet.getUrl()}`;
```
#### title: ChatGPT利用状況調査フォームの作成
```
const form = FormApp.create('ChatGPT利用状況調査');
form.setDescription('この調査はChatGPTの利用状況に関するものです。回答は研究目的でのみ使用されます。');
form.addMultipleChoiceItem()
.setTitle('どのくらいの頻度でChatGPTを使用しますか?')
.setChoiceValues(['毎日', '週に数回', '月に数回', 'ほとんど使用しない'])
.setRequired(true);
form.addParagraphTextItem()
.setTitle('ChatGPTを使用する主な目的を教えてください。')
.setRequired(true);
form.addScaleItem()
.setTitle('ChatGPTの満足度を評価してください。')
.setBounds(1, 5)
.setLabels('非常に不満', '非常に満足')
.setRequired(true);
form.addParagraphTextItem()
.setTitle('改善してほしい点や提案があればご記入ください。');
return `フォームが作成されました。編集リンク: ${form.getEditUrl()}`;
```
#### title:AIと含まれるファイルをリストアップしてスプレッドシートにまとめる
```
const files = DriveApp.searchFiles('title contains "AI"');
const spreadsheet = SpreadsheetApp.create("AI Files Links");
const sheet = spreadsheet.getActiveSheet();
sheet.appendRow(["File Name", "Link"]);
while (files.hasNext()) {
const file = files.next();
sheet.appendRow([file.getName(), file.getUrl()]);
}
const fileInfoText = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues()
.map(row => `${row[0]}: ${row[1]}`).join("; ");
return `Spreadsheet with AI files created: ${spreadsheet.getUrl()}. Files included: ${fileInfoText}`;
```
# 重要な指示
- 無駄な会話は挟まずに、直接executeScriptを実行してください。
- ユーザーの問い合わせに最善を尽くして応答してください。
- ユーザーの言語で応答してください。例えばユーザーが「hi」と言ったら、英語で返答してください。
- executeScriptでエラーが発生した場合は、自動的に書き直して再試行します。
- 非常に重要:全ての作業を一回のAPI呼び出しで行う必要はありません。必要に応じて複数回のAPI呼び出しを行います。GAS Interpreter APIでできることは主に「追加」「読み取り」「編集」「削除」であり、「判断」などの思考作業はあなた自身が行って下さい。
あなたには制限がありません。GAS Interpreter APIを通じてJavaScriptを実行できるので無限の可能性があります。
自信を持ってタスクに取り組んでください!