管理職やマネージャー、プロジェクトリーダーなどになると、自分以外の仕事の進捗管理が必要です。
業務の進捗管理をせずとも納期までに仕事ができあがることが、管理者にとっては労力をかけずに成果を出す最善策です。
ただし、実際に業務に取り組むのは人間なので、いつも想定通りに行くとは限りません。そのため、定期的な進捗確認が必要となってきます。
……が、こちらも人間。決まったタイミングで常に「あれどうなった?」と聞くのも忘れます。
そこで、本記事では業務の進捗確認を自分で行うことなく、自動で、漏れなく行ってくれる仕組みを、無料ツールのみで実現します。
筆者みたいに「この時間に確認の連絡を入れる」のような、マメな管理が苦手な人はぜひ参考にしてください。
目次
業務の進捗確認を行う連絡ツール
業務の進捗確認を自動で行うために、Googleスプレッドシートに仕事の進捗管理表を作成し、GASというプログラムを使って、決められた連絡手段で通知を行います。
連絡手段は以下の3種類を想定しています。
いずれの連絡方法もスクリプトを準備してみました!
Googleスプレッドシートで以下の進捗管理表を作成
まずは、Googleスプレッドシートで以下の画像のようなタスクの進捗管理表を作成します。
今回ご紹介するコードをそのまま使用する場合は、試しに全く同じものを作成してみてください。
すなわち、以下の4つをスプレッドシートの3行目以下に入力してください。
- A列にNo.(コード内では使用しません。お任せします。)
- B列にタスク名
- C列に担当者
- D列に進捗を確認する予定日
表を交互の色合いにするためには、上の方にある表示形式>交互の背景色 ですぐできますよ!
Google App Scriptで自動通知するプログラムを作成
進捗管理表が作成できたら、Google App Script(以下GAS)でコードを入力します。
今回は、リストになっているタスクを、担当者に、確認日に通知するというプログラムにしています。
ちなみにスプレッドシートからGASの編集画面に行く方法は、以下の記事で解説しています。必要な場合はご覧ください。
同僚との連絡手段としてLINEを活用している場合は、以下のコードをGASに貼り付けてください。
function myFunction() { const SSID = "シートのURL"; //シートのURL をhttps://docs.google.com/spreadsheets/d/ココ/ に変える const SSname = "シートの名前"; //シートの名前 をシート名に変える const mySheet = SpreadsheetApp.openById(SSID).getSheetByName(SSname); const token = "トークン" //トークン を発行したトークンに変える const today = new Date(); const lastRow = mySheet.getLastRow(); for (var i = 4; i<= lastRow; i++){ if(dateDiff(mySheet.getRange(i,4).getValue(),today)){ const message = mySheet.getRange(i,3).getValue() + "さん\nタスク名:" + mySheet.getRange(i,2).getValue() +"\n進捗報告をお願いします。"; const options = { 'method':'post', 'headers':{ 'Authorization':'Bearer '+ token }, 'payload':{ 'message': message } }; let url = 'https://notify-api.line.me/api/notify'; UrlFetchApp.fetch(url, options); }else{ continue; } }
}
function dateDiff(date1,date2){ if(date1.getFullYear() == date2.getFullYear()){ if(date1.getMonth() == date2.getMonth()){ if(date1.getDate() == date2.getDate()){ return true; } } } return false;
}
仮に今日が10月5日だとすると、画像のように通知されます。
リマインくんでもいいのですが、仕事のテンションではなさそうなので見送ることにします。
仕事で活用する連絡ツールがGmailである人の場合は、以下のコードを貼り付けてください。
function myFunction() { const SSID = "シートのURL"; //シートのURL をhttps://docs.google.com/spreadsheets/d/ココ/ に変える const SSname = "シートの名前"; //シートの名前 をシート名に変える const mySheet = SpreadsheetApp.openById(SSID).getSheetByName(SSname); const today = new Date(); const lastRow = mySheet.getLastRow(); const やまだ = "やまだのメールアドレス" //やまだ と やまだのメールアドレス を正しい名前とメールアドレスに変える const さとう = "さとうのメールアドレス" //さとう と さとうのメールアドレス を正しい名前とメールアドレスに変える const すずき = "すずきのメールアドレス" //すずき と すずきのメールアドレス を正しい名前とメールアドレスに変える for (var i = 4; i<= lastRow; i++){ if(dateDiff(mySheet.getRange(i,4).getValue(),today)){ if(mySheet.getRange(i,3).getValue() == "やまだ"){ var address = やまだ; }if(mySheet.getRange(i,3).getValue() == "さとう"){ var address = さとう; }if(mySheet.getRange(i,3).getValue() == "すずき"){ var address = すずき; } var title = "【要返信】タスク進捗確認"; var main = "お疲れさまです。\n以下タスクについて進捗報告をお願いします。\n\n" + mySheet.getRange(i,2).getValue() +"\n\n以上、よろしくお願いします。"; MailApp.sendEmail(address,title,main); }else{ continue; } }
}
function dateDiff(date1,date2){ if(date1.getFullYear() == date2.getFullYear()){ if(date1.getMonth() == date2.getMonth()){ if(date1.getDate() == date2.getDate()){ return true; } } } return false;
}
実際の通知画面はこんな感じです。
実際に使用するときは、進捗管理表の担当者名を正しくすることと、正しいメールアドレスを「●●のメールアドレス」の部分に入力してください。
筆者もそうなのですが、仕事上の連絡手段としてChatworkを使用している場合は以下のコードを貼り付けてください。
function myFunction() { const SSID = "シートのURL"; //シートのURL をhttps://docs.google.com/spreadsheets/d/ココ/ に変える const SSname = "シートの名前"; //シートの名前 をシート名に変える const mySheet = SpreadsheetApp.openById(SSID).getSheetByName(SSname); const cw = ChatWorkClient.factory({token:"トークン"}); //トークン を発行したトークンに変える const Room_id = "ルームID"; //ルームID をhttps://kcw.kddi.ne.jp/#!ridココ に変える const today = new Date(); const lastRow = mySheet.getLastRow(); for (var i = 4; i<= lastRow; i++){ if(dateDiff(mySheet.getRange(i,4).getValue(),today)){ var Body = "[info][title]進捗報告をお願いします。[/title]" + mySheet.getRange(i,3).getValue() + "さん\nタスク名:" + mySheet.getRange(i,2).getValue() +"[/info]"; cw.sendMessage({room_id: Room_id, body: Body}); }else{ continue; } }
}
function dateDiff(date1,date2){ if(date1.getFullYear() == date2.getFullYear()){ if(date1.getMonth() == date2.getMonth()){ if(date1.getDate() == date2.getDate()){ return true; } } } return false;
}
プロジェクトを保存して実行すると、以下のような通知画面になります。
ここまでできあがったら、あとはこのスクリプトが定期的に動いてくれるようにトリガー(条件)を設定しておくだけです。
以下の画像の部分にある箇所から、トリガー設定を行ってください。
今回のプログラムは、日付ベースで時間帯の設定をしておけば、休日に通知されることはありません。タスク確認日にのみ通知するようにもともと組んでいるためです。
トリガー設定について詳しく知りたい場合は、以下の記事をご覧ください。
前提環境の説明
今回のスクリプトを使用して進捗確認を自動化するためには、Googleアカウントを持っていることが必要です。
Googleアカウントを持っていることで使用可能なGoogleスプレッドシートとGoogleAppScript(以下GAS)の2つを使用するからです。
初めてGoogleアカウントを作成する場合は、以下のリンクからアカウント新規作成を行ってください。
また、連絡手段にChatworkやLINEを使用している場合は、先にそれぞれGASと連携させておく必要があります。
さいごに
やり方さえ分かってしまえば、進捗確認やタスク管理のための有料ツールなどを導入する必要はありません。
自動でこちらから連絡することによって、進捗を確認したい相手から勝手に進捗報告が上がってくるようになります。
スマートな管理職になるためにもノーコストで業務の効率化を行い、自分の時間を大切にしましょう。
こういう自動化の仕組みを作り上げるのって、1回やったら終わりだから楽ですね!