「Googleカレンダーと同期する少年野球チーム向け欠席申告フォーム」、前回の続きの記事で2回目となります。
1/3 Googleカレンダーと同期する少年野球チーム向け欠席申告フォーム | なかちょんブログ
今回やることは、
- Googleフォームを作成する
- Google App Scriptを入力する
といったことをやっていきます。
目次
Googleフォームを作成する
まずは、Googleフォームを作成しましょう。
上記のリンクからGoogleフォームのページに移動します。
左側の「Googleフォームをつかってみる」のボタンをクリック。
左上に「新しいフォームを作成」の下にある「空白」の上の「+(プラス)」をクリックします。
このように、新しい「無題のフォーム」が作成されました。
フォーム名を「欠席・早退・遅刻申告フォーム」にします。
① 下の「無題の質問」を「選手名」に変更。
② 「ラジオボタン」の横にある逆三角系をクリックします。
ちなみに、フォームの名前は、この後に自動化するためのスクリプトで同じである必要がるので、完全に同じにしてください。
例) 「選手名」を「選手」とすると、自動化のスクリプトは動きません。
フォームの入力形態が選べるので、選手名は事前に登録しておける「プルダウン」にします。
選手名を入力。先頭に学年をいれると選びやすいです。
右下にある「必須」をクリックすると、この項目を入力(選択)しないと送信できない「必須項目」になりますので、ここは「必須」にしておきます。
次は予定日をフォームを追加します。
右の方にある「+」をクリックすると、今の「選手名」の下に新しいフォームが追加されました。
フォームの入力形態は「日付」を選択します。
フォーム名を「予定日」、「必須」にします。
次は欠席、相対、遅刻といった内容を入力するフォームを追加します。
内容はこんな感じです。
各自、チームに合わせて内容は修正してください。
最後は伝言フォームを追加します。
フォームの種類は「段落」にします。こちらは「必須」項目はチェックしないでください。
これでフォームの作成はできました。
右上にある目のマークをクリックします。
このように表示されれば、フォームは完成です。
スクリプトを作成する
次ははいよいよ、自動化する為のGoogleAppScriptを作成していきます。
プログラムです。
でも大丈夫!コピーして貼り付ければOKです。
ではいってみましょう!
先程作成したフォームの右上にある鉛筆のマークをクリックします。
フォームが編集できる画面になりました。
ここで、右上にある「みっつの点」のマークをクリックします。
「スクリプトエディタ」をクリックします。
こんな画面がでればOKです。
もともと表示される下記のコードは削除してください。
function myFunction() { }
きれいにしたら、下のコードを入力します。(コピペしてください)
var CALENDAR_ID = ""; var EVENT_TITLE = "欠席・早退"; var MAIL_ADDRESS = ""; var MAIL_SUBJECT = "<欠席・早退・遅刻申告フォーム>"
これが入力したところです。
① CALENDAR_IDは自分で作成したカレンダーIDをを入力してください。
わからない人は前回の記事の最後の方(まとめの直前)で説明していますので、あなたがつくったカレンダーのIDをこちらに記載してください。
1/3 Googleカレンダーと同期する少年野球チーム向け欠席申告フォーム
② 連絡先のメールアドレスを入力します。うちのチームでは、監督・コーチ陣のメーリングリストを作っているので、そのメールアドレスにしてます。
そうすると、誰かが欠席や早退などの申告をすると、関係者に連絡が行きます。
次に、下記のコードをコピペします。
var MAIL_BODY = "\ 監督・コーチ・スタッフの皆さま\n\ 以下の選手が欠席・早退・遅刻いたします。\n\ \n\ \n\ __PLAYER__\n\ __DATE__\n\ __CONTENT__\n\ __MEMO__\n\ \n\ \n\ ご確認のほど宜しくお願いします。\n\ googleカレンダーには自動反映済み。\n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ \n\ "; var ITEM_KEY_DATE = "予定日"; var ITEM_KEY_PLAYER = "選手名"; var ITEM_KEY_CONTENT = "内容"; var ITEM_KEY_MEMO = "伝言"; /* // メール送信の認証を行う為、一度このメソッドを実行する必要がある。 function test(){ MailApp.sendEmail(MAIL_ADDRESS, MAIL_SUBJECT, "テスト"); } */ /** * カレンダーにイベントを追加する * @param e */ function addCalendar(e) { // 入力項目の取得 var responses = e.response.getItemResponses(); var messages = []; var items = {}; var date = null; for (var i=0; i<responses.length; i++) { var response = responses[i]; var key = response.getItem().getTitle(); var value = response.getResponse(); if (key==ITEM_KEY_DATE) { date = value.replace(/-/g, "/"); items[key] = getDate(new Date(date)); } else { messages.push(value); items[key] = value; } } // 既に予定があるかを確認する var scheduled_date = new Date(date); var calendar = CalendarApp.getCalendarById(CALENDAR_ID); var events = calendar.getEventsForDay(scheduled_date); var description = ""; for (var i=0; i<events.length; i++) { var event = events[i]; var title = event.getTitle(); if (title == EVENT_TITLE) { description = event.getDescription() + "\n" + messages.join(" "); event.setDescription(description); break; } } //予定が無い場合は新規作成 if (!description) { calendar.createAllDayEvent(EVENT_TITLE, scheduled_date, {description:messages.join(" ")}).setGuestsCanSeeGuests(false); } // メール送信 var body = MAIL_BODY.replace(/__PLAYER__/g, items[ITEM_KEY_PLAYER]) .replace(/__DATE__/g, items[ITEM_KEY_DATE]) .replace(/__CONTENT__/g, items[ITEM_KEY_CONTENT]) .replace(/__MEMO__/g, items[ITEM_KEY_MEMO]); MailApp.sendEmail(MAIL_ADDRESS, MAIL_SUBJECT, body); } function getDate(date) { var d = []; d.push(date.getFullYear()); d.push(date.getMonth()+1); d.push(date.getDate()); return d.join('/'); }
最後に左上にある「保存(フロッピーディスク)」のマークをクリックします。
これで、Google App Scriptは完了です。
まとめ
「Googleカレンダーと同期する少年野球チーム向け欠席申告フォーム」の第2回は、Googleフォームで「欠席・早退・遅刻申告フォーム」っを作り、自動化の為の「Google App Script」を入力しました。
あとは、これらが連携する設定を次回行います。
続きの記事はこちら
3/3 Googleカレンダーと同期する少年野球チーム向け欠席申告フォーム
前の記事はこちら
1/3 Googleカレンダーと同期する少年野球チーム向け欠席申告フォーム
私が書いた書籍の紹介
12月21日にソーテック社から発売された「Jetson Nano超入門」という本を共著で書かせていただきました。
自分たちの子供が大人になったときに、当たり前のように使われているであろう「人工知能」を試すことができる小型のコンピューターボードの使い方についての書籍です。
今回ご説明している「欠席・早退・遅刻申告フォーム」も、人間がもっと楽になる「自動化」のひとつですが、今まで人の手をかけなければならなかったいろんなことが、これからは人工知能で自動化されるような世界になってきます。
ぜひ、本屋さんで見かけましたなら、パラパラと見ていただけると幸いです。(買ってね!)