見出し画像

安否確認システムをスプレッドシート(GAS)で無料で作ってみた



ご覧いただきありがとうございます。
私は100人程度のスタートアップ企業で人事・労務管理を担当しています。
事業の社会への浸透を目指す方のバックオフィスをアシストするのが自身の目標です。
そのためにこのnoteでは少しでも役立つ情報の発信を目指します!



きっかけ

今年1月の能登半島地震で被害に合われた方のご冥福をお祈りいたします。

当社では直接被害を受けた従業員の方はおりませんでしたが、地震発生が1月1日であったことにより、一人一人の安否を確認するのに、適切な対応ができませんでした。
正式な連絡網を事前に作っていなかったため、各部長やリーダーがそれぞれ知っているメンバーの個人の連絡先に連絡して、わからない場合は人事に問い合わせをして、なんとか状況を把握するという形でした。

そのため、災害時に適切に機能する安否確認サービスの導入を検討いたしました。
外部のサービスはいっぱいあるものの、初期費用や月額がかかり、当社のようにまだ財政が安定しないうちはなるべくコストを抑えたい、、そう思っていた際に、スプレッドシートとGASを組み合わせて、安否確認ツールを作成することができました。

この記事ではそのツールの中身について説明いたします。

ツールの概要

まず、ツールの全体像について説明します。
スプレッドシートで担当者が送信用のチェックボックスボタンを押すと、そのシート上のメンバーにメールが一斉送信されます。
メールの文面は、別のGoogleドキュメントに記載した内容を記載します。

(スプレッドシートのイメージ)

(メールの本文のイメージ)


{姓}{名}にはスプレッドシートに記載した名前が入ります。

メール上に安否確認を回答するフォームのURLを記載して、メールを受け取ったメンバーが各自、状況を入力できるようにします。

(回答フォームのイメージ)

また、回答内容の一覧を各メンバーがみれるように、送信メールにその一覧のリンクも載せておくと、安否状況を全員がシェアできます。

(送付されるメールのイメージ)

以上がツールの全体像になります。
それでは各手順を説明します。

ツールの作り方


①スプレッドシートを記載する
・スプレッドシートにメール、姓、名のリストを記載します。
 1行目に下記のようにヘッダを記載します。

・スプレッドシートに送信用のチェックボックスを作ります。
(ボタンでなくチェックボックスにしたのは、ボタンではスマホからシートを開いた際に押せない場合があるためになります。)
 チェックボックスはツールバーの「挿入(Insert)」⇒チェックボックスで表示できます。

②Googleドキュメントに記載する

メール本文を記載します。
・メールの送信時には、{姓}{名}にスプレッドシート上の内容が挿入されます。
回答用のGoogleフォームのリンクを本文にのせておきます。

③安否回答のフォームをGoogleフォームで作ります。
選択肢は自由に設定できます。家族の状況を尋ねたり、出社ができる状態か確認するのもよいかと思います。

④GoogleAppsScript(GAS)を記載します。
・下記のプログラムのコピペで大丈夫です。
プログラムは「Apps Script」に記載します。
ツールバーの「拡張機能(Extensions)」⇒「Apps Script」で表示できます。

ドキュメントIDはGoogleドキュメントのリンクのドキュメントIDをいれます
(ドキュメントID)

送信元メールはスプレッドシートを利用しているGoogleアカウントのアドレスをいれてください。

(プログラム)

function myFunction() {

  var sheet = SpreadsheetApp.getActiveSheet(); // シートの取得
  var lastRow = sheet.getLastRow(); // 最終行の取得
  
  var DOC_ID = 'XXXXXXXXXXXXXXXXXXXX'; // 文面のドキュメントID
  var doc = DocumentApp.openById(DOC_ID);
  var docText = doc.getBody().getText(); // テキストのドキュメントを取得

  var subject = '安否状況の提出依頼'; // メールタイトル
  var strFrom = 'XXXXXXXX.com'; // 送信元メール
  var sterSender = 'XXX社'; // 送信者名
   
  for(let i = 2; i <= lastRow; i++){

    var mailAddress = sheet.getRange(i, 1).getValue();
    var lastName = sheet.getRange(i, 2).getValue();
    var firstName = sheet.getRange(i, 3).getValue();
  
    
    var body = docText.replace('{{姓}}',lastName).replace('{{名}}',firstName);
    
    try{
      GmailApp.sendEmail(
        mailAddress,
        subject,
        body, {
          from: strFrom,
          name: sterSender
        }
        
        );
    }catch(e){
      console.log('エラーを検知しました。');
      console.log('エラー内容:'+e.message);
    }

  }
} 

// checkButton
function onEdit() {
  var sheet = SpreadsheetApp.getActiveSheet(); // シートの取得
  // ONになったとき
  if(sheet.getRange('E1').getValue()==1){
    this.myFunction()
  }
  sheet.getRange('E1').uncheck();  // 終わったらチェックを外す
}

(トリガーの設定)
チェックボックスからスクリプトを実行するには、トリガーの設定が必要です。
Apps Scriptの左メニューからトリガー(Triggers)を押します。

右下の「トリガーを追加(Add Trigger)」を押します。


関数に「onEdit」関数を設定、イベントタイプに「編集(on edit)」を指定します。

以上で完成です!
チェックボックスにチェックを入れると、リストのメンバーにメールが送付されます。
メールに記載されたGoogleフォームからメンバーは回答を確認することができます。


まとめ

いろいろなツールがWEBで購入でき、中小企業でも質の高いサービスを導入できるようになってきていると感じます。
しかし、それぞれのシステムがある程度のコストがする以上、すべてをしっかり取り入れることは難しいのではないかと感じてしまいます。
そんなときに、ちょっとした工夫で自社で作れるツールがあると、経営者の方にも役立ち、社員の安心にもつながるのでよいのかなと思っています!


ご覧いただきありがとうございます!
このnoteでは、起業をされたり、これから事業の推進に取り組みたい方に、管理業務やマネージメント、モチベーションの向上などの組織運営について、情報を発信できる場にできればと思います。
ぜひコメント等お願いいたします!




この記事が参加している募集

人事の仕事

この記事が気に入ったらサポートをしてみませんか?