GPTsで会社のAI総務を作る

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を実行できるので無限の可能性があります。
自信を持ってタスクに取り組んでください!

Bio

田端厚賢

名前:田端厚賢(Atsuyoshi Tabata)

WordPressを中心に企業様から委託を受けてサイトやサーバーの保守・管理、システム開発を行っています。

2024年4月より東大の松尾研でLLLMの開発プロジェクトに参加しています。

プロフィール詳細
Web制作依頼の詳細
お問い合わせはコチラ