GAS Folder.addFileで勤怠管理を効率化!ファイル整理術と自動化

GAS Folder.addFileで勤怠管理を効率化!ファイル整理術と自動化

勤怠管理における課題は、従業員からの出勤・退勤データの収集、集計、そしてそれらの適切な保管です。特に、紙やExcelで管理している場合、ファイルが散在し、必要な情報を見つけるのに時間がかかったり、紛失のリスクがあったりします。GAS (Google Apps Script) の Folder.addFile 関数を利用することで、これらの課題を解決し、勤怠管理を大幅に効率化できます。

Folder.addFileとは?

Folder.addFile(file) は、Google Drive API の一部で、指定されたファイルをフォルダに追加するために使用されます。この関数を使うことで、GASから特定のファイルを指定のフォルダに自動的に移動・コピーできます。勤怠管理においては、従業員から提出された勤怠記録ファイル(スプレッドシート、PDFなど)を、日付や従業員名などの規則に基づいてフォルダに自動的に整理するのに役立ちます。

勤怠管理における実装方法

勤怠管理システムを構築する上で、Folder.addFile は、提出された勤怠データを整理し、アクセスしやすくするための重要な役割を果たします。以下に、具体的な実装例をいくつか紹介します。

例1:日付ごとのフォルダにファイルを自動整理

従業員が毎日提出する勤怠記録ファイルを、日付ごとのフォルダに自動的に整理するスクリプトです。

function moveAttendanceFileToDateFolder(fileId, folderId) {
// ファイルとフォルダを取得
const file = DriveApp.getFileById(fileId);
const folder = DriveApp.getFolderById(folderId);

// ファイルをフォルダに追加
folder.addFile(file);

// 元の場所からファイルを削除(移動する場合)
const parentFolders = file.getParents();
while (parentFolders.hasNext()) {
const parentFolder = parentFolders.next();
parentFolder.removeFile(file);
}
}

// 使用例
// moveAttendanceFileToDateFolder("ファイルID", "フォルダID");

解説:このスクリプトでは、DriveApp.getFileById でファイルIDに基づいてファイルを取得し、DriveApp.getFolderById でフォルダIDに基づいてフォルダを取得します。そして、folder.addFile(file) でファイルがフォルダに追加されます。元の場所からファイルを削除することで、移動が実現します。

例2:従業員ごとのフォルダにファイルを自動整理

従業員ごとにフォルダを作成し、その従業員が提出した勤怠記録ファイルをそれぞれのフォルダに整理するスクリプトです。

function moveAttendanceFileToEmployeeFolder(fileId, employeeName, parentFolderId) {
// 親フォルダを取得
const parentFolder = DriveApp.getFolderById(parentFolderId);

// 従業員名フォルダが存在するか確認
let employeeFolder;
try {
employeeFolder = parentFolder.getFoldersByName(employeeName).next();
} catch (e) {
// フォルダが存在しない場合は作成
employeeFolder = parentFolder.createFolder(employeeName);
}

// ファイルを取得
const file = DriveApp.getFileById(fileId);

// ファイルをフォルダに追加
employeeFolder.addFile(file);

// 元の場所からファイルを削除(移動する場合)
const parentFolders = file.getParents();
while (parentFolders.hasNext()) {
const parentFolder = parentFolders.next();
parentFolder.removeFile(file);
}
}

// 使用例
// moveAttendanceFileToEmployeeFolder("ファイルID", "従業員名", "親フォルダID");

解説:このスクリプトでは、まず従業員名のフォルダが存在するかを確認し、存在しない場合は作成します。その後、folder.addFile(file) でファイルを従業員名のフォルダに追加します。

例3:特定の条件でファイルを振り分ける

例えば、残業時間が一定時間を超える場合に、アラートフォルダにファイルを移動させるようなスクリプトです。

function moveFileBasedOnOvertime(fileId, overtimeHours, targetFolderId) {
// 残業時間が5時間を超えたら特定のフォルダに移動
if (overtimeHours > 5) {
const file = DriveApp.getFileById(fileId);
const folder = DriveApp.getFolderById(targetFolderId);
folder.addFile(file);

// 元の場所からファイルを削除(移動する場合)
const parentFolders = file.getParents();
while (parentFolders.hasNext()) {
const parentFolder = parentFolders.next();
parentFolder.removeFile(file);
}
}
}

// 使用例
// moveFileBasedOnOvertime("ファイルID", 残業時間, "アラートフォルダID");

解説:このスクリプトでは、残業時間に応じてファイルの移動先を決定します。条件分岐を使用することで、様々なルールに基づいたファイル整理が可能です。

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

  • 権限エラー: GASがGoogle Driveにアクセスする権限がない場合、エラーが発生します。GASのプロジェクト設定で、Google Drive APIが有効になっているか確認してください。
  • ファイルIDまたはフォルダIDの間違い: ファイルIDやフォルダIDを間違えると、ファイルが見つからずエラーが発生します。IDが正しいか確認してください。
  • ファイルが移動しない: removeFile が正常に動作しない場合、ファイルが移動しません。権限設定やスクリプトの実行ユーザーを確認してください。

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

  • ファイル名の自動変更: file.setName() を使用して、ファイル名を自動的に変更できます。例えば、ファイル名に日付や従業員名を追加することで、さらに整理しやすくなります。
  • スプレッドシートからの情報抽出: SpreadsheetApp を使用して、スプレッドシートから必要な情報を抽出し、それを基にファイルの整理方法を決定できます。
  • トリガー設定: GASのトリガーを設定することで、ファイルの提出を検知し、自動的にスクリプトを実行できます。

まとめ

GASの Folder.addFile 関数は、勤怠管理におけるファイル整理を自動化し、業務効率を大幅に向上させる強力なツールです。今回紹介したコード例を参考に、自社の勤怠管理システムに Folder.addFile を組み込み、より効率的なファイル管理を実現してください。