見出し画像

GPTsで実現!Gmailの下書きを自動で作成する方法


はじめに


こんにちは! 前回は、Google Apps Script(GAS)との連携で、GPTsを使ってカレンダーイベントを管理する方法や、Google Formを自動作成するテクニックを紹介しました。

今回は、自動化の範囲をさらに拡大し、GASとGPTsを組み合わせてGmailの下書きを自動で作成する方法についてお話します。具体的には、「MTGのリマインダーメールをGmailに下書きを作って。」のような指示を出すだけで、Gmailに下書きを保存する方法を紹介します。

この記事の対象者:

  • GPTsのCustom Actionsを自作したい方

  • GASとGPTsの基本的な連携方法を学びたい方

必要な準備:

  • Googleアカウント:GASスクリプトを作成・実行するために必要です。

  • ChatGPTの課金アカウント:GPTsを作成するために必要です。

手順① GASを準備する


まず、GASを利用して、指示に応じたGmailの下書きを自動作成するスクリプトを作成します。

GASプロジェクトの作成:
Google Apps Scriptのホームページにアクセスし、「新しいプロジェクト」をクリックして開始します。

スクリプトのコーディング:
新しいプロジェクトが開いたら、下記のコードをエディタにコピー&ペーストします。このコードは、具体的なフォーム作成のリクエストを受け取り、指定された質問項目を含むGoogle Formを生成します。

function doPost(e) {
  try {
    var payload = JSON.parse(e.postData.contents);
    switch (payload.operation) {
      case 'createDraft':
        var response = createDraft(payload);
        return ContentService.createTextOutput(JSON.stringify(response))
          .setMimeType(ContentService.MimeType.JSON);
    }
  } catch (error) {
    return ContentService.createTextOutput(JSON.stringify({'status': 'error', 'message': error.toString()}))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

function createDraft(details) {
  try {
    var recipient = details.recipient || ""; // recipient が未指定の場合は空文字列を使用
    var draft = GmailApp.createDraft(recipient, details.subject, details.body);
    return ContentService.createTextOutput(JSON.stringify({
      'status': 'success',
      'message': 'Draft created',
      'draftId': draft.getId()
    })).setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    return ContentService.createTextOutput(JSON.stringify({'status': 'error', 'message': error.toString()}))
      .setMimeType(ContentService.MimeType.JSON);
  }
}
   

手順② 作成したGASをWebアプリとしてデプロイする


作成したGASスクリプトを外部からアクセス可能にするため、Webアプリとしてデプロイします。

デプロイの準備:
GASエディタの上部にある「デプロイ」ボタンをクリックし、「新しいデプロイ」を選択します。

デプロイ設定:
「⚙️設定」アイコンを選択し、「ウェブアプリ」を選びます。

以下の情報を設定欄に入れます。

  • 新しい説明文:適切な文章

  • 次のユーザとして実行:自分

  • アクセスできるユーザー:全員

デプロイの実行:
全ての設定が完了したら、「デプロイ」をクリックします。Googleによるアクセス承認が求められる場合がありますので、指示に従って承認してください。

WebアプリケーションのURLを取得:
デプロイが完了すると、生成されたWebアプリケーションのURLが表示されます。このURLは、GPTsからのリクエストを受け付けるために使用しますので、メモしておいてください。

手順③ GPTsを作成する。


次に、GASと連携するGPTsを設定します。

GPTsの設定:
以下のページに移動し、新しいGPTsを作成します。
設定リンク:https://chat.openai.com/gpts/editor

基本情報の入力

  • 名前説明:GPTsの目的を簡潔に説明する名前と詳細な説明を入力します。

  • Instructions:

あなたは、ユーザーの要望に応じてGmailのメールドラフトを作成する専門家です。
ビジネスメールからカジュアルなメッセージまで、様々なスタイルのメールを提案できます。ユーザーが提供するキーワードやコンテキストに基づいて、受信者の関心を引き、メッセージの目的を明確に伝えるための内容を構築します。また、文法や表現にも注意を払い、読み手にとって理解しやすい、心地よい文章作成を目指します。よりパーソナライズされたメールを作成するために、必要に応じてユーザーから追加情報を求めることができます。しかし、ユーザーからの明示的な依頼がない限り、自動的にメールの下書きを作成することはありません。
  • Capabilities:このGPTでは特に設定は不要です。

Actionsの定義
「Actions」セクションに移動し、「Scheme」を選択して、上記で作成したGASのWebアプリケーションと通信するための設定を記入します。

{
  "openapi": "3.0.0",
  "info": {
    "title": "Gmail Draft Creator API",
    "version": "1.0.0",
    "description": "API to create drafts in Gmail."
  },
  "servers": [
    {
      "url": "https://script.google.com/macros/s/AKfycbzte4Y61ByjKuqwBSlGCuiiOIyCiLyPUMpo3TVH83YT0RtZ0oJkr7ZeKfjs8Am26rbN/exec"
    }
  ],
  "paths": {
    "/exec": {
      "post": {
        "summary": "Create a Gmail draft",
        "operationId": "createDraft",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "operation": {  
                    "type": "string",
                    "enum": ["createDraft"],
                    "default": "createDraft",
                    "description": "Operation to perform."
                  },
                  "recipient": {
                    "type": "string",
                    "description": "Email address of the recipient. Optional."
                  },
                  "subject": {
                    "type": "string",
                    "description": "Subject of the email"
                  },
                  "body": {
                    "type": "string",
                    "description": "Body of the email"
                  }
                },
                "required": ["operation", "subject", "body"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Draft created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "draftId": {
                      "type": "string",
                      "description": "ID of the created draft"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

スクリプトIDの置き換え:Scheme内の10行目のYOUR_SCRIPT_IDを、手順②で得たWebアプリケーションのURL内のスクリプトIDに置き換えます。

コードの解説


GASスクリプト解説

doPost(e) 関数

  • パラメータ e: HTTP POSTリクエストから受け取るイベントオブジェクト。このオブジェクトには、リクエストの内容が含まれています。

  • doPost関数は、リクエストボディ(e.postData.contents)からJSON形式のペイロードを解析し、そのペイロードに基づいて異なる操作を行います。

  • この例では、payload.operationの値に基づいてcreateDraft関数を呼び出します。現時点では、createDraftオペレーションのみがサポートされています。

  • オペレーションを正常に実行できた場合、関数はJSON形式の成功レスポンスを返します。エラーが発生した場合、エラーメッセージを含むJSONレスポンスを返します。

createDraft(details) 関数

  • パラメータ details: メールドラフトの作成に必要な情報を含むオブジェクト。recipient(受信者)、subject(件名)、body(本文)を含むことが期待されます。

  • createDraft関数は、指定された詳細を使用してGmailの下書きを作成します。この下書きは、GmailApp.createDraftメソッドによって作成されます。

  • 下書きが正常に作成された場合、関数は下書きのIDを含む成功レスポンスを返します。エラーが発生した場合は、エラーメッセージを含むレスポンスを返します。

終わりに


GASとGPTsを使ってGmailの下書きを自動作成する方法をご紹介しました。この自動化プロセスを活用すれば、日常のメール作成作業を効率化できます。

この記事を参考にご自身でパーソナライズされたGPTの開発する際の一助になれば、幸いです。

最後までご精読いただき、ありがとうございました。

私のX(Twitter)のアカウント:
https://twitter.com/junichikawaAI

Image Credit: Open AI Inc. and Google LLC

この記事が参加している募集

AIとやってみた

GPTsつくってみた

この記事が気に入ったらサポートをしてみませんか?