
#139 フォームの応答を使いやすくする(機能追加と挙動確認)
はじめに
↓ の記事について、
いくつか気になることがあったので、以降のように機能追加と確認を行いました。
①フォームの対応者への通知もすべての回答を含めないようにしたい
フォームの回答内容が機密情報に当たる場合、その回答内容をメールやチャットスペースに通知するのは、機密情報を複製することになるので適切な振る舞いとは言えないように感じられました。
そのため、列 B「回答者へのメールによる応答」と同様に、対応者への通知もすべての回答内容を含めるのではなく、指定した数の項目だけ通知に含めるようにしました。
変更したプログラムは、↑ の元記事のスプレッドシートを更新してありますので、コピーし直してください。

この設定で ↑ のように 2 設定した場合には、下図のように「タイムスタンプ」と「メールアドレス」の 2つの項目が回答内容として、メールで通知されます。
フォームに回答があったことは把握できるので、メール下部のスプレッドシートへのリンクにアクセスして、回答内容を確認できます。

②トリガーを設定したユーザーがいなくなったらどうなる?
この GAS による機能を利用していて、新年度になって担当者が異動でいなくなってしまったらどうなるのかを確認してみました。
結論としては、以下の通りです。
トリガーを設定したユーザーがいなくなると、トリガーは「無効」になり動作しなくなる。
細かな状況としては…
スプレッドシートに複数の担当者がアクセスできる状態で、自分以外がトリガーを設定した場合には、「他のユーザー」によってトリガーが設定されていることがスクリプトエディタで確認できます。

この状態で、トリガーを設定したユーザーが削除されても、トリガーは残ったままでした。
この状態で、スプレッドシートに追加された下図のようなメニューからトリガー関数の解除(「トリガー関数を登録」を選択)を行っても、自身で登録したトリガーではないため、オーナーが「他のユーザー」になっているトリガーは削除できません。

スクリプトエディタの「トリガー」で表示されている当該トリガーの左端にあるメニューをクリックしても、オーナーが「他のユーザー」となっているトリガーには「トリガーを削除」の項目が表示されません。

この状態で「トリガー関数を登録」を行うと、下図のように 2重にトリガーが登録されてしまいます。

この状態でフォームに回答があると、二重に処理されるのかと思ったら、下図のように「他のユーザー」のトリガーは無効と表示され、処理されませんでした。

トリガーが重複しているから無効になっているわけではなく、「無効」と表示されている横に表示された (i) をクリックすると、下図のような理由でアクセスできないことがわかりました。
どうやら、トリガーを設定したユーザーが削除されたことが、トリガーが無効になった原因のようです。 ※二重にトリガーが設定されていることが原因ではなさそう。

自治体内(組織内)で異動しただけなら、ユーザーが削除されてしまうわけではないのですが、当該スプレッドシートにアクセスできなくなってしまっても同様のエラーになってしまうような気がします。
このような事態にならないように、
異動前にトリガーを解除し、異動しないユーザーでトリガーを設定し直す。
部署に割り当てられているアカウントがあるのであれば、そのアカウントでトリガー設定を行う。
のいずれかを行った方がいいと思います。気付いたら、「フォームの回答に対する処理が行われなくなっていた。😖」ということのないように注意しましょう。
最後に
今回の記事では、過去の #129 のプログラムへの機能追加と挙動の確認を行いました。
フォームの回答に機密情報が含まれている場合に、その内容を複製してしまうことで、このプログラムが使えなかったケースにも対応できるようになると思います。
また、長期間の運用を行う場合、担当者のユーザーが異動してしまうことも想定されます。そんなときの挙動も確認できたので、事前に備えることもできると思います。
いろいろと、「備えあれば患いなし」ですね。😘
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても短いスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
これらの記事への感謝の意は、記事に対する「スキ ♡」や、以下のような Amazon のアフィリエイトリンク経由での商品の購入、note の「チップ」機能を利用してもらえると、このようなプログラム作成の励みになります。😍
Amazon のアフィリエイトリンクを開くと、それ以降 24時間以内に商品を購入した場合に、紹介者(この場合は、わたし)に紹介料が発生します。