見出し画像

【コストゼロ】GASと連携してGPTsでGoogleフォームを自動作成する方法


はじめに


こんにちは!前回は、Google Apps Script(GAS)と連携してGPTsでカレンダーのイベントを確認・編集する方法を紹介しました。

今回は、その自動化の範囲をさらに広げ、GASとGPTsを組み合わせてGoogle Formsを自動作成するプロセスを探求します。

想像してみてください。会議やイベントが終わった後、参加者のフィードバックを集めるための満足度調査を作成したいと思ったとき、どれだけ時間がかかるでしょうか?今回紹介する方法を使えば、「今日のイベントについての満足度調査を作って」とGPTに頼むだけで、あっという間にGoogle Formが準備できます。

この記事の対象者:

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

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

  • Zapierの連携よりも複雑な処理を求めている方

必要な準備:

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

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

手順① GASを準備する


最初のステップとして、GASを用いてGoogle Formsを動的に生成するコードを作成します。このスクリプトは、GPTからの指示に応じてフォームを自動的に作成するための基盤となります。

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

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

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

function createFormWithQuestions(details) {
  try {
    var form = FormApp.create(details.title);
    
    details.questions.forEach(function(question) {
      switch(question.type) {
        case 'text':
          form.addTextItem().setTitle(question.title);
          break;
        case 'paragraph':
          form.addParagraphTextItem().setTitle(question.title);
          break;
        case 'multipleChoice':
          form.addMultipleChoiceItem().setTitle(question.title).setChoiceValues(question.options);
          break;
      }
    });
    
    return {
      'status': 'success',
      'message': 'Form with questions created',
      'formId': form.getId(),
      'formUrl': form.getPublishedUrl()
    };
  } catch (error) {
    return { 'status': 'error', 'message': error.toString() };
  }
}
   

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


次に、作成したGASスクリプトをWebアプリケーションとしてデプロイし、外部からアクセスできるようにします。このステップは、GPTsからスクリプトを呼び出すために不可欠です。

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

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

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

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

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

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

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

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

手順③ GPTsを作成する。


GASをデプロイした後は、GPTsを作成し、GAS Webアプリケーションとの連携を設定します。

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

基本情報の入力

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

  • InstructionsCapabilities:このプロジェクトでは特に設定は不要ですが、特定の指示や能力を明確にしたい場合はここに記述します。

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

{
  "openapi": "3.0.0",
  "info": {
    "title": "Google Forms API",
    "version": "1.0.0",
    "description": "API for creating and managing Google Forms."
  },
  "servers": [
    {
      "url": "https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec"
    }
  ],
  "paths": {
    "/exec": {
      "post": {
        "summary": "Create a Google Form with specified questions",
        "operationId": "createFormWithQuestions",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "operation": {
                    "type": "string",
                    "enum": ["createFormWithQuestions"]
                  },
                  "title": {
                    "type": "string"
                  },
                  "questions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "options": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Optional for multiple choice questions"
                        }
                      },
                      "required": ["type", "title"]
                    }
                  }
                },
                "required": ["operation", "title", "questions"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Form created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "formId": {
                      "type": "string"
                    },
                    "formUrl": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

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

実際に作成したGPTsを使ってみる


すべての設定が完了したら、GPTsをテストしてみましょう。例えば、「イベントの満足度フォームを作成して」とGPTに命令すると、指定した詳細でGoogle Formが作成され、そのURLが返されます。

コードの解説


GASスクリプト解説

doPost関数

  • 概要: WebhookからのPOSTリクエストを処理する。

  • 処理内容:

    • HTTP POSTリクエストの内容を解析。

    • 操作の種類(operation)に応じて適切な関数を実行。

    • 'createFormWithQuestions'の場合はcreateFormWithQuestions関数を呼び出す。

    • エラー発生時はエラーメッセージを含むJSONレスポンスを返す。

createFormWithQuestions関数

  • 概要: Googleフォームを作成し、指定された質問でフォームを構成する。

  • 処理内容:

    • 新しいGoogleフォームを作成し、与えられたタイトルを設定。

    • 各質問に対して、質問のタイプ(text, paragraph, multipleChoice)に応じてフォーム項目を追加。

      • text: テキスト項目を追加。

      • paragraph: 段落テキスト項目を追加。

      • multipleChoice: 複数選択項目を追加し、選択肢を設定。

    • フォームのIDと公開URLを含む成功メッセージを返す。

    • 処理中にエラーが発生した場合はエラーメッセージを返す。

終わりに


この記事を通じて、GASとGPTsを使ったGoogle Formsの自動作成プロセスを紹介しました。

この記事を参考にご自身でCustom ActionsのAPIを開発する際の一助になれば、幸いです。

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

最後までお読みいただき、ありがとうございました。より多くの自動化のアイデアに興味がある方は、私のXをフォローして最新情報を得てください。
https://twitter.com/junichikawaAI

Image Credit: Open AI Inc. and Google LLC

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

AIとやってみた

GPTsつくってみた

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