LoginSignup
6
2

More than 1 year has passed since last update.

【 Node-RED・GoogleSpreadSheetAPI・LINEBot 】で社内事業所の生産予定数と要員計画(欠勤状況)を確認したい

Last updated at Posted at 2022-01-15

■作成の経緯

社内の生産現場にとって各販社からの発注つまり生産予定に対する要員計画は非常に重要かつ困難である。東西の事業所それぞれで1日あたり数万パックを超える生産数、100名を超える従業員を管理する必要がある管理者の負担を少しでも軽減したいと考え、まずその第一歩として当機能を作成しました。今回は状況を把握するだけの機能ですが、今後は欠勤者(閾値を設定)が多数発生した場合、休みの従業員(優先順位を設定)に出勤要請の通知を送信するなどの機能も追加していければと考えております。

■苦労した点

Node-REDは初体験でしたので、ネットの見本を参考に見様見真似で作成してみました。ローコードプログラミング開発ツールは操作方法がある程度わからないと全く前へ進みません。やはり自分には合わないと改めて感じましたが、いい機会なので最低限の基礎知識は習得します。GoogleSpreadSheetは連携するまでの工程が多く面倒でした。

■出力結果

line.png

LINEに対象事業所部門をメッセージ送信すると本日の生産予定数、出勤者数、欠勤者数とその内訳を簡単に確認することができ、管理者はその状況に応じて要員計画の見直し(応援や配置変更)などを行います。

■使用した機能

  • LINEBot
  • Node-RED
  • Google SpreadSheet API
  • Google SpreadSheet

■Node-RED構成

test3.png

①【http in】LINEから送信されたメッセージを取得
②【function】受信したメッセージを保持
③【GSheet】Google SpreadSheet に登録された表形式の情報を読み込む
④【function】表形式の内容を送信用メッセージに編集
⑤【ReplyMessage】送信用メッセージをLINEに送信

■③SpreadSheet(スプレッドシート)

sp.png

こちらの情報についてすべて手登録は非効率ですので社内システムのバッチ処理で、備考は出勤している責任者のINPUT、欠勤情報は各従業員のINPUTが必要となり、それらを集計し、さらにスプレッドシートに反映する処理を作成する必要があります。スプレッドシートの更新はPythonで可能なようなので今度やってみます。

■④functionコーディング内容

sample

const index = msg.payload.findIndex(rows => rows[0] == msg.line.events[0].message.text);

if (index != -1) {
  resultMessage = "■" +msg.payload[index][0] + "状況";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・生産予定数:" + msg.payload[index][1];
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・出勤者数:" + msg.payload[index][2] + " 名";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・生産終了予定時間:" + msg.payload[index][3];
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・本日の欠勤者数:" + msg.payload[index][4] + " 名";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・備考:" + msg.payload[index][5];
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "■" +msg.payload[index][0] + "欠勤者内訳";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・体調不良:" + msg.payload[index][7] + " 名";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・自然災害:" + msg.payload[index][8] + " 名";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・公共交通機関遅れ:" + msg.payload[index][9] + " 名";
  resultMessage = resultMessage + "\n";
  resultMessage = resultMessage + "・その他:" + msg.payload[index][10] + " 名";
}
msg.line.events[0].message.text = resultMessage;
msg.payload = msg.line;
return msg;

ローコードプログラミング開発ツールとはいえ、やはり多少のコーディングは必要となります:point_up_2:

■所感と今後のシステム開発について

今回のローコードプログラミング開発ツールと今までの開発手法を両立させ、開発規模と要員に応じて使い分けるレベルになれば、非常に有益となります。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2