見出し画像

#94 Google フォームによって、Google グループに参加させる : ChatGPT にプログラミングさせてみた (3)

いつになく長いタイトルになっていますが… そのままの内容です。

Google フォームで確認をしたアカウントを、所定の Google グループに参加させる GAS のプログラムを、ChatGPT(GPT-4)で作成してみました。

仕事をする人工知能のイラスト

プログラムの要求仕様

今回のプログラムは、次のような仕様を満たすことを目的としています。

  1. Googleフォームで収集したメールアドレスを、自身が管理者(オーナー)の Googleグループに所属させる GAS のプログラム。

  2. GAS のプログラムは、Googleフォームのバインドスクリプトとして作成する。

  3. 所属させる Googleグループは、スクリプトプロパティ GROUP_ADDRESS から取得する。

  4. ただし、Googleフォームで収集されたメールアドレスが、スクリプトプロパティ ALLOW_DOMAIN を含んでいない場合には、Googleグループには参加させない。

  5. Googleグループに参加できた場合には、当該メールアドレスにその旨をメールで通知する。 ※件名「グループに参加しました。」

このプログラムは、以下 URL で案内されていたように、Google Workspace で発行されているアカウントでも試験運用中 の Bard が利用できるようになったので、その利用申請を自動化しようとしたものです。
すべてのアカウントに対して有効化するのではなく、申請のあったアカウントだけ、有効化するものです。

管理コンソールで「Early Access Apps」を、このプログラムで参加させるグループに対して有効化しておくことで、Google フォームでの申請によって Bard を利用するための準備を行うことができるのです。

Google Bard で試してみる

せっかくなので、Google Bard に聞いてみました。

Bard に質問 (1)

質問に対して、すんなりと回答が返ってきますが、前述の仕様を追加で入力していきます。

Bard に質問 (2)

更に仕様を追加していきます。

Bard に質問 (3)
Bard に質問 (4)-1
Bard に質問 (4)-2
Bard に質問 (4)-3

がんばってはいるんでしょうが… 

  • なぜか、プログラム中にプログラムが記述されてたり…

  • フォームで入力されたメールアドレスが取得できない。

という感じで、このままコピペしても、動くはずのない感じです。残念…😖

ChatGPT で試してみる

Bard と同様に ChatGPT にも聞いてみました。

ChatGPT に質問 (1)

WebAPI を使ったプログラムを提示してくれたので、追加で仕様を伝えてみました。

ChatGPT に質問 (2)-1

ChatGPT に質問 (2)-2

更に、仕様を追加…

ChatGPT に質問 (3)
ChatGPT に質問 (4)

こうやって提示してくれたプログラムを実行すると、Class Group に addUser というメソッドがが存在していないので動作しないプログラムになっています。😖 その旨を伝えてみました。

ChatGPT に質問 (5)-1

ChatGPT に質問 (5)-2

こんなやり取りで得られた ↓ のプログラムを、Google フォームのバインドスクリプトとしてコピペして、トリガー関数を設定すれば、前述の仕様を満たす動作をしてくれました。

// Get the script properties
var scriptProperties = PropertiesService.getScriptProperties();
var GROUP_ADDRESS = scriptProperties.getProperty('GROUP_ADDRESS');
var ALLOW_DOMAIN = scriptProperties.getProperty('ALLOW_DOMAIN');

// Add an onFormSubmit trigger linked to this function in your script
function onFormSubmit(e) {
  // Get the response from the form
  var formResponse = e.response;

  // Get the respondent email
  var email = formResponse.getRespondentEmail();

  // Check if the email domain is allowed
  var emailDomain = email.split('@')[1];
  if (emailDomain === ALLOW_DOMAIN) {
    if (addMemberToGroup(GROUP_ADDRESS, email)) {
      MailApp.sendEmail({
        to: email,
        subject: "グループに参加しました。",
        body: "あなたのメールアドレス " + email + " はGoogleグループ '" + GROUP_ADDRESS + "' に追加されました。"
      });
    }
  }
}

function addMemberToGroup(groupKey, memberKey) {
  var user = {
    email: memberKey,
    role: 'MEMBER'
  };
  try {
    var result = AdminDirectory.Members.insert(user, groupKey);
    if (result && result.status == 'ACTIVE') {
      return true;
    } else {
      Logger.log('Failed to add member: ' + memberKey);
      return false;
    }
  } catch (e) {
    Logger.log('Failed to add member: ' + e.toString());
    return false;
  }
}

まとめ

Bard と ChatGPT に、同じような仕様を与えて、GAS のプログラムを作成してみました。現時点では、Bard のプログラミング能力は ChatGPT よりも劣る感じなのかもしれません。
優れている ChatGPT にしても、存在していないメソッドを使用したプログラムを提示してきたりするので、その辺りに対応できなければプログラムを完成させることはできません。

今回は以前の記事で使用したような「魔法の言葉」を使わずに、単純な文章で指示してみましたが、作成しようとするプログラムの要求仕様を明確にしたり、それらを AI に対する指示(プロンプト)にできるかが、新しいプログラミングの形なんだろうな、と思います。
日本語でプログラミングしているような感じなのかもしれません。

出来上がったプログラムのカスタマイズを AI に行わせるのは効率的ではない場合も多々ありそうなので、そういったときには自身でプログラムを修正しなけばならないと思います。 ※例えば、今回のプログラムであれば申請者に通知するメールの文面を変更する、といったカスタマイズ。

そもそもコピペだけで動作するプログラムを作成してくれるわけではないし、前述のようにカスタマイズするケースもあるでしょうから、「Bard や ChatGPT があればプログラミング言語なんて知らなくても大丈夫!」という話には まだ ならないんだろうな、と思います。

最後に、お決まりのフレーズなどを書いておきます。

  • 一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。

  • コメントを含めても 40行余りのスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。

  • 特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。

わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
「スキ ♡」を押してもらえると、このようなプログラム作成の励みになります。😍

いいなと思ったら応援しよう!