GAS Body.getTextで勤怠管理を効率化!残業時間集計を自動化する

GAS Body.getTextで勤怠管理を効率化!残業時間集計を自動化する

本記事では、Google Apps Script(GAS)のBody.getText()メソッドを活用して、勤怠管理における残業時間集計を自動化する方法を解説します。勤怠管理は、従業員の労働時間を正確に把握し、適切な給与計算を行う上で不可欠ですが、手作業での集計は時間と手間がかかり、人的ミスも発生しやすくなります。GASとBody.getText()を組み合わせることで、これらの課題を解決し、業務効率を大幅に向上させることができます。

Body.getText()とは?

Body.getText()は、Googleドキュメントやメールの本文などから、テキストデータを抽出するためのGASのメソッドです。このメソッドを使用することで、特定のフォーマットで記述された情報をプログラムで処理できるようになります。例えば、従業員が日報をGoogleドキュメントで提出している場合、Body.getText()を使って日報の内容を読み込み、出退勤時間や残業時間などの情報を抽出できます。

勤怠管理における課題

多くの企業では、依然として従業員の勤怠情報を手作業で集計しています。これは、以下のような課題を引き起こします。

  • 時間と手間:従業員数が多いほど、集計作業に時間がかかります。
  • 人的ミス:手作業による入力や計算ミスが発生しやすいです。
  • 集計の遅延:集計に時間がかかるため、給与計算や労務管理が遅れることがあります。

GASとBody.getText()による解決策

GASとBody.getText()を組み合わせることで、これらの課題を解決できます。具体的には、以下の手順で自動化を実現します。

  1. 従業員がGoogleドキュメントで日報を作成する(特定のフォーマットで記述)。
  2. GASでGoogleドキュメントを開き、Body.getText()で日報のテキストデータを取得する。
  3. 取得したテキストデータから、出退勤時間や残業時間などの情報を抽出する。
  4. 抽出したデータをスプレッドシートに記録する。
  5. スプレッドシートで集計を行い、残業時間を自動的に計算する。

実装例

例1:Googleドキュメントから残業時間を抽出してスプレッドシートに記録する

function recordOvertime() {
// ドキュメントIDとスプレッドシートIDを設定
const docId = "YOUR_DOCUMENT_ID";
const spreadsheetId = "YOUR_SPREADSHEET_ID";

// ドキュメントを開く
const doc = DocumentApp.openById(docId);
const body = doc.getBody();

// ドキュメントのテキストを取得
const text = body.getText();

// 残業時間を抽出(例:残業時間:2時間30分)
const overtimeRegex = /残業時間:(\d+)時間(\d+)分/;
const match = text.match(overtimeRegex);

if (match) {
const hours = parseInt(match[1]);
const minutes = parseInt(match[2]);
const totalOvertime = hours + minutes / 60;

// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getActiveSheet();

// 最終行にデータを追加
sheet.appendRow([new Date(), totalOvertime]);
} else {
Logger.log("残業時間が見つかりませんでした。");
}
}

解説:

  • YOUR_DOCUMENT_IDYOUR_SPREADSHEET_IDは、実際のドキュメントIDとスプレッドシートIDに置き換えてください。
  • 正規表現/残業時間:(\d+)時間(\d+)分/を使って、テキストから残業時間を抽出しています。必要に応じて、日報のフォーマットに合わせて正規表現を調整してください。
  • 抽出した残業時間を時間単位に変換し、スプレッドシートに記録しています。

例2:特定のキーワードを含む行を抽出する

function extractSpecificRows() {
// ドキュメントIDを設定
const docId = "YOUR_DOCUMENT_ID";

// ドキュメントを開く
const doc = DocumentApp.openById(docId);
const body = doc.getBody();

// ドキュメントのテキストを取得
const text = body.getText();

// テキストを改行で分割して配列にする
const lines = text.split("\n");

// 特定のキーワードを含む行を抽出
const keyword = "休暇";
const extractedLines = lines.filter(line => line.includes(keyword));

// 抽出した行をログに出力
Logger.log(extractedLines);
}

解説:

  • YOUR_DOCUMENT_IDは、実際のドキュメントIDに置き換えてください。
  • text.split("\n")で、テキストを改行で分割して配列に変換しています。
  • filterメソッドを使って、特定のキーワードを含む行を抽出しています。

よくある問題とトラブルシューティング

  • getText()で取得できない:ドキュメントの権限設定を確認してください。GASがドキュメントにアクセスできる権限が必要です。
  • 正規表現がうまくいかない:日報のフォーマットと正規表現が一致しているか確認してください。正規表現の記述ミスがないか確認することも重要です。
  • 文字化けが発生する:ドキュメントの文字コードがUTF-8になっているか確認してください。

カスタマイズ方法と応用例

  • 残業時間以外の情報を抽出する:Body.getText()と正規表現を組み合わせることで、出勤時間、退勤時間、休憩時間など、さまざまな情報を抽出できます。
  • 複数のドキュメントを処理する:フォルダ内のすべてのドキュメントを処理するようにGASを拡張できます。
  • 抽出したデータを他のシステムと連携する:抽出したデータをAPI経由で他のシステムに連携できます。

まとめ

GASのBody.getText()メソッドを活用することで、勤怠管理における残業時間集計を自動化し、業務効率を大幅に向上させることができます。本記事で紹介したコード例やトラブルシューティングを参考に、ぜひGASを活用した勤怠管理システムの構築に挑戦してみてください。