#32 フォームの回答をカレンダーに登録する
Facebook のグループで
という質問があり、そのやり取りの中でカレンダーに記録するアイディアがあったので、実際にスクリプトを作成してみた。
この記事は、「はてなブログ」に 2022/02/05 に投稿したものを移転させたものです。note に移転する際に、細かな部分で変更してある部分もあります。
作成したスクリプト
実際に作成したスクリプトは、以下の通りです。
使用される場合は、以下の手順でスクリプトをコピー&ペーストしてください。
「Google フォーム」の右上にある「その他」から「スクリプトエディタ」を選択する。
開かれた「スクリプトエディタ」で、スクリプトの内容をすべて置き換える。
「スクリプトエディタ」の左側のメニューバーから「トリガー」を選択して、画面右下の「トリガーを追加」を選択する。
図のようにフォームが送信されたタイミングで、トリガーが発生して、関数が呼び出されるように設定する。
スクリプトの初回実行時には、実行するアカウントによる確認作業が必要になります。詳しくは以下の記事をご覧ください。
スクリプトの動作について
他のスクリプトと同様にコピーを配布したかったのですが、「Google フォーム」を copy で配布できるように共有すると、元になったフォームまで編集できてしまうなどの理由から、スクリプトだけを公開します。公開しない理由や注意点も、以下にまとめます。
実際の動作としては、フォームを用意した人(トリガーを実行する権限を設定した人)の「Google カレンダー」に、フォームのタイトル名でカレンダーを作成しています。そのカレンダーに回答された日時でイベント(予定)を作成し、そのイベントに回答者を招待しています。
ファイル名を設定して、それがタイトルに反映された状態だと、フォームのタイトルは API レベルでは空欄になっています。意図的に、フォームのタイトルを編集しなければ、タイトルは設定されません。カレンダー名が重複しないように、フォームのタイトルを使用しているので、重複しないように意識して設定してください。
作成されたイベントの詳細には、回答された内容をテキスト化してあります。すべての設問をテキスト化しているつもりですが、この辺りは場合によってカスタマイズが必要な部分だと思います。
Gmail が無効化されているユーザーでも動作確認しましたが、問題なくカレンダーにイベントが作成されていました。回答したら、ちょっと待っている間にカレンダーに予定が追加されました。
フォームを用意した人のカレンダーには、すべての回答者の回答がまとめて表示されます。
注意 回答を組織内に限定しない場合、回答者が自身のメールアドレスではないメールアドレスを用いて回答が可能です。そうすると、フォームを用意した人の名義で、他人のカレンダーにイベントを追加できてしまいます。
このような状態は望ましくないと思いますので、「メールアドレスを収集する」と「○○○○と信頼できる組織のユーザーに限定する」をともに ON にした状態で使用してください。
最後に
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 80行程度のスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
この記事が気に入ったらサポートをしてみませんか?