#129 フォームの応答を使いやすくする
はじめに
ずいぶん前から感じていたのですが、ホームページに連絡先としてメールアドレスを掲載しているところが、あまり見かけなくなったと思いませんか?
多くは、何かしらの Web フォームを利用して、メールアドレスを直接公開しないようにしているような感じです。
今回のプログラムは、ホームページなどの連絡先として Google フォームを利用したときに、その回答に応対しやすくするためのものです。
Google フォームそのものが提供している機能としては、下図のように回答があればメールで通知する機能が提供されている。
しかしながら、以下 URL で紹介されているように、この機能は当該フォームのオーナーに通知されるだけなので、特定の担当者にしか通知されない。ホームページを複数人で管理している場合には、場合によっては問い合わせへの対応が遅れてしまうかもしれません。
今回のプログラムでは、前述の問題点を解消しつつ、ICT に不得手な人でも、説明に沿って Google スプレッドシートに必要な設定を行うだけで使えるようにしてあります。 ※スクリプトエディタでの操作は不要です。
※ ※ ※ 注意 ※ ※ ※ 追記:2024/10/29
以下の記事(#130、#131)で触れたように、「①フォームの回答者に対して、メールで回答内容を通知する」の設定内容について、適切ではない匿名によるメール送信フォームになってしまう可能性がある点に注意してください。
作成したプログラム
使用する場合には、対象となる Google アカウントでログインした状態で、以下の URL にアクセスして、スプレッドシートをコピーしてください。
https://docs.google.com/spreadsheets/d/1Lajhc1w1q1IgLsc5ybOyZqamEDDrriicVwmArbytbMc/template/preview
このスプレッドシートを利用することで、Google フォームへの回答に対する応答がつかいやすくなります。
プログラムをはじめて実行する際には、アカウントによる確認作業が必要になります。詳しくは以下の投稿をご覧ください。
提供する機能は、次の 3つです。どの機能も、「拡張機能」→「スクリプトエディタ」といった難しい設定を行う必要がありません。
①フォームの回答者に対して、メールで回答内容を通知する
Google フォームに備えられている「回答のコピーを回答者に送信」でも同様のメールが返信されますが、このプログラムを使うと、自由な文章を添えて返信が行えます。
また、 Google Workspace 環境で動作させていれば、送信元アドレスを秘匿するように設定してあります。
この機能を利用する場合には、以下の #130、#131 で説明している点に留意してお使いください。
②フォームに回答があったことを、指定されたメールアドレスにメールで通知する
前述したように、Google フォームに備えられている「新しい回答についてのメール通知を受け取る」でも同様のメールが送信されますが、そのメール通知はフォームのオーナーにしか通知されません。
このプログラムを使うと、任意のメールアドレス(複数も可)に通知できます。
このメールについても、Google Workspace 環境で動作させていれば、送信元アドレスを秘匿するように設定してあります。
③フォームに回答があったことを、指定されたメールアドレスにスペース(チャット)で通知する
前項②と同じ内容を、Google Chat のスペースに投稿して通知します。
それぞれのフォーム専用のスペースを作成しておけば、通知を見落とすこともありません。
使い方
①ファイルのコピー
このスプレッドシートのコピーを自身の Google ドライブに保存します。
この記事の流れであれば、上記 URL にアクセスして、既にコピーされているはずです。
②Google フォームの「回答の送信先を選択」を指定
処理対象となる Google フォームで、「回答の送信先を選択」の設定で、この Google スプレッドシートを保存先として指定する。
③シートの名前を確認する
前項②で、このスプレッドシートに Google フォームの回答が保存されるシートが作成されます。
そのシートをアクティブな状態にして、右図のように「フォームの応答」→「フォームの名前からシート名を設定」を選択します。
はじめてこのプログラムを利用するのであれば、このタイミングで、GAS のスクリプトを実行するための認証が表示されます。前述したように、確認作業を行ってください。
上記の処理で、アクティブなシートの名前がリンクされているフォームのタイトルに変更されます。 このシート名が長すぎるようであれば、何かしら省略して短くしても構いません。
このシート名を、Ctrl+C でコピーして、シート「設定」をアクティブにします。次の操作に続きます。
④動作の設定を行う
前項でコピーしたシート名を、シート「設定」の 2行目以降の設定されていない行の列 A に貼り付けます。
列 B には、この列には空白以外が設定されていると、フォームに回答した人に回答内容が返信されます。
回答者にメールを送信しない場合には、空白(空欄)にします。
メールを送信する場合には、空白以外の何か(例えば、Yes)を入力します。 ※何かしらの数字を指定した場合は、次項のように回答内容を制限します。
回答者に返信する回答内容を制限したい場合には、列 B に何列目までの回答内容を返信するかを数字で指定します。
列 B に 4 が指定されていると、列 D までの回答内容が、回答者にメールで送信されます。
列 B に 2 が指定されていると、列 B まで(ほとんどの場合は、「タイムスタンプ」と「メールアドレス」の 2つ)が回答者にメールで送信されます。
フォームの回答にメールアドレスが存在していなかった場合には、処理されません。
列 C には、「回答者へのメールによる応答」を送信する際の文例を設定します。
空白だった場合には、シート「文例」の内容が使用されます。
列 D には、対応する人に回答があった旨を連絡するメールアドレスを設定します。この部分が、メールの宛先として設定されます。
空白が設定されていれば何もしません。
複数人に送信したい場合にはカンマ( , )で連結して入力します。
列 E には、対応する人に回答があった旨を連絡するスペースの Webhook を設定します。
空白が設定されていれば何もしません。
スペースの Webhook については、以下の記事も参考にしてください。
列 F には、「メールによる対応者への連絡」「スペースによる対応者への連絡」を送信する際の文例を設定します。
空白だった場合には、シート「文例」の内容が使用されます。
シート「設定」には、複数のシート(フォーム)に対する動作の設定を行えます。それぞれのフォームに対して、送信する文面は個別に設定できます。
⑤トリガー関数の設定
このプログラムをはじめて使用するときにだけ、図のように「フォームの応答」→「トリガー関数を登録」を選択します。
この操作によって、スプレッドシートにリンクされているフォームに回答があると、GAS のスクリプトが実行されます。
この操作を複数回行っても、二重に処理されることはありません。
このプログラムを使用しなくなったときには、「トリガー関数を解除」を行ってください。
⑥ シート「文例」の確認
シート「文例」には、送信するメールの件名と、文例が指定されていなかったときのデフォルト文が設定してあります。
スペースに投稿される内容は、メールで送信される内容と同一です。
⑦動作確認
前項までの操作が終われば、プログラムを利用する準備は完了です。 既にフォームに回答があれば、その回答の行にカーソルを合わせて、「フォームの応答」→「現在の行で送信処理を再実行」を選択します。
フォームにまだ回答がなければ、動作確認のためにフォームから回答を送信します。
うまく動作しないときは、該当箇所の設定を確認してください。
プログラムのポイント
今回のプログラムでは、以下 URL で紹介されていた「返信不可アドレスから送付」という方法を用いて、メールを送信しています。
この方法は、個人の Google アカウントでは利用できませんが、組織で利用している Google Workspace アカウントであれば利用できます。
具体的には、下図のような感じでメールが送信されます。メールのアカウント部が noreply に変更されてメールが送信されます。
この方法を用いることで、不用意にメールアドレスが知られずに済みます。
フォームへの回答に応答しやすくなるように、メールとスペースに通知される文面には、下図のようにスプレッドシートへのリンクと何行目のデータなのかを記載しています。回答内容は通知される文明にも含まれていますが、実際のデータ(スプレッドシート)にアクセスしやすくしています。
最後に
今回は、これまでに作成してきたプログラムをつなぎ合わせたようなプログラムになっていますが、基本的に手作りで ChatGPT や Gemini などは利用していません。課題を解決することも目的ですが、自身でプログラミングすることも目的なので…😅
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 240行くらいのスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
「スキ ♡」を押してもらえると、このようなプログラム作成の励みになります。😍
この記事が気に入ったらサポートをしてみませんか?