#2 おやすみ連絡フォームをつくる/ITド素人がGoogle無料アプリで業務管理システムを作る!
Google無料アプリを使ったシステム作りのきっかけ
まず最初にどうにかしたかったのは利用者のおやすみ連絡。
当初、利用者は福祉系統括の社員さんに直接電話をしておやすみしていました。
弊事業所は発達障がいやうつ・精神障がいを持つ人がほとんどです。
うつで休職経験がある身としては「電話連絡ってめちゃくちゃツラくね?」って思いまして。
これがシステム作りに踏み出すきっかけになりました。
最初はPythonでデスクトップアプリ作れるかな?って触ったこともないくせにチャレンジ。
カンタンなアプリは作れたのですが、その後のデータ蓄積方法とかデータの利用方法がよく分からんくて断念。
もっと楽に…とGoogle先生と一緒に方法を探していた時、Googleの無料アプリケーションの存在を知りました。
幸いにも弊事業所には運営用(何かのサービスに登録するとか)のGoogleアカウントが一応あります。
自分以外にこのアカウントにアクセスできる実働スタッフは他に2人だけ。
IT系に疎い福祉系統括の社員さん
職業指導以外の業務は絶対しないバイト同僚(社長の知人の後輩、時給めちゃ高)
↑ なメンバーなので、弊事業所アカウントのGoogleDriveを丸ごとシステム運営用に使ってしまおうと思い立ちました。
【やったこと】
Googleフォームでおやすみ連絡フォームを作成
おやすみ予定日の設定(当日含め15日後まで表示)
chatworkとの連携
フォームURLをQRコード化し、利用者に共有
【どんな感じでやったか】
フォームに必要な質問を洗い出す
できるだけユーザーに負担をかけないように、体調不良の場合を想定して
必要最低限の情報がわかる最大設問4つのシンプルフォームを作りました。
*名前
間違って他人の名前を選択しないよう、「短文回答」で自分の名前を記入
*おやすみの理由(大まかに)
「体調不良」「通院」「私用」の3つだけをラジオボタンで選択
*病院など事前に休む日がわかっているとき用のおやすみ予定日
GASで日付を選択式に設定
選択する日付が更新されず翌日以降も残るのでリセットトリガーを追加
フォームの「日付」という回答方式は、パソコンだとカレンダーからクリックで選択できますが、スマホからのアクセス想定なので(スマホからだと年月日を手入力、クソ面倒)ここらへんは後述の参考URLを参考にして作りました。
*体調不良の場合、体のぐあい
福祉方面で必要な情報らしいので「短文回答」で追加
フォームに日付選択プルダウンをGASで実装する
画像の「<> スクリプトエディタ」からGASのエディタに移動。
GASは下記URLを参考に、弊事業所に合うようにちょっと書き換え。
(参考URL先では30日間のところを15日間に変更)
プルダウンを実装してもこのままでは翌日以降にも過去の日付が残ってしまうので、やっぱり下記URLを参考にリセットトリガーを設定しました。
参考URL >>
フォームとchatworkを連携させる
回答確認のためにフォームの回答スプレッドシートをわざわざ見に行くというのは非効率なので、利用者が回答したらすぐ職員全員に通知がいくよう、chatworkの専用チャットルームに転送できるよう設定しました。
参考URL >>
これは参考元のスクリプトをそのままお借りしてます。
フォームの短縮URLをQRコード化
フォーム編集画面右上の「送信」をクリック
作ったフォームの共有方法(メール・リンク・HTML埋め込み)のリンクタブから、リンクのURLを短縮にチェックを入れてコピー
短縮URLをQRコードメーカーなどでQRコード化
弊事業所では、新しく利用者が増えた際にQRコードをスマホで読み取ってもらい、ブックマークやホーム画面に追加するなど、利用者自身がアクセスしやすいようにしてもらっています。
【実際書いたスクリプト】
GAS・おやすみ予定日プルダウン
当日含めた15日間を選択させる「おやすみ予定日プルダウン」のGASは、こんな感じで書き換えました。
function setDaysChoices() {
const form = FormApp.getActiveForm();
const items = form.getItems();
const item = items[2]; // items[n]は n+1個目の質問
const now = new Date(); // now = 現在の日付時刻
const y = now.getFullYear(); // y = 今日の年
const m = now.getMonth(); // m = 今日の月
const d = now.getDate(); // d = 今日の日
const days = ['日', '月', '火', '水', '木', '金', '土'];
const choices = [];
for(let i = 0; i < 15; i++){
let date = new Date(y, m, d+i); // 今日から15日間
let day = date.getDay(); // 日付らへんがiの再代入なのでletで
date = Utilities.formatDate(date, 'Asia/Tokyo', `yyyy年M月d日(${days[day]})`);
choices.push(date);
}
item.asListItem().setChoiceValues(choices);
}
【画面スクショ】
こんな感じ。
次はタイムカードフォームをつくったはなしをさせてください。
今日はこのへんで。ありがとうございました。