中級者向け実践:一般企業でのGASファイル操作による年末調整準備の源泉徴収票自動作成システム(部門利用)
年末調整の準備、特に源泉徴収票の作成は、多くの企業にとって時間と労力を要する業務です。Google Apps Script(GAS)を使用することで、このプロセスを大幅に効率化できます。この記事では、中級者レベルのGASユーザーを対象に、一般企業における年末調整準備の自動化、特に源泉徴収票の自動作成システムを部門利用向けに構築する方法を解説します。
GASを使用した源泉徴収票自動作成のメリット
GASを活用することで、以下のようなメリットが期待できます。
- 時間短縮:手作業によるデータ入力や転記作業を削減し、大幅な時間短縮を実現します。
- ミスの削減:自動化により、人的ミスを減らし、正確性の高い源泉徴収票を作成できます。
- コスト削減:人件費や印刷コストなどの削減に貢献します。
- ペーパーレス化:電子的なデータ管理により、ペーパーレス化を推進できます。
- 柔軟性:企業の規模やニーズに合わせてカスタマイズ可能です。
システム概要
今回作成するシステムは、以下の機能を持ちます。
- データ収集:従業員情報、給与情報、控除情報をスプレッドシートから収集します。
- 源泉徴収票作成:収集したデータを基に、源泉徴収票のPDFファイルを自動生成します。
- ファイル保存:生成されたPDFファイルをGoogleドライブに保存します。
- 部署別管理:各部署の担当者が、自分の部署の従業員の源泉徴収票のみを操作できるようにします。
必要な準備
システム構築に必要な準備は以下の通りです。
- Google Workspaceアカウント(Googleスプレッドシート、Googleドライブ、GASを使用)
- 従業員情報、給与情報、控除情報が記載されたスプレッドシート
GASコード例
1. スプレッドシートからデータを取得する
まず、スプレッドシートから必要なデータを取得する関数を作成します。
function getEmployeeData(sheetName) {
// スプレッドシートを開く
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
// データ範囲を指定
const dataRange = sheet.getDataRange();
// データの値を配列として取得
const values = dataRange.getValues();
// ヘッダー行をスキップ
const headers = values[0];
const employeeData = [];
// 2行目からデータを読み込む
for (let i = 1; i < values.length; i++) {
const row = values[i];
const employee = {};
for (let j = 0; j < headers.length; j++) {
employee[headers[j]] = row[j];
}
employeeData.push(employee);
}
return employeeData;
}
この関数は、指定されたシート名(sheetName
)のスプレッドシートからデータを読み込み、各従業員の情報をオブジェクトとして配列に格納して返します。部署ごとにシートを分けることで、部署別の管理を容易にします。
2. 源泉徴収票のPDFファイルを生成する
次に、取得したデータを基に源泉徴収票のPDFファイルを生成する関数を作成します。
function generateWithholdingSlip(employeeData) {
// テンプレートドキュメントのIDを指定
const templateId = "YOUR_TEMPLATE_ID";
// テンプレートドキュメントを開く
const templateDoc = DocumentApp.openById(templateId);
// テンプレートドキュメントのコピーを作成
const newDoc = templateDoc.makeCopy(employeeData["氏名"] + "_源泉徴収票");
// コピーしたドキュメントを開く
const doc = DocumentApp.openById(newDoc.getId());
const body = doc.getBody();
// テンプレート内のプレースホルダーをデータで置換
body.replaceText("{{氏名}}", employeeData["氏名"]);
body.replaceText("{{住所}}", employeeData["住所"]);
body.replaceText("{{給与}}", employeeData["給与"]);
body.replaceText("{{控除額}}", employeeData["控除額"]);
// PDFとして保存
const pdfBlob = doc.getAs("application/pdf");
// ドキュメントを閉じる
doc.saveAndClose();
// コピーしたドキュメントを削除
DriveApp.getFileById(newDoc.getId()).setTrashed(true);
return pdfBlob;
}
この関数は、従業員データ(employeeData
)を受け取り、テンプレートドキュメント(Googleドキュメント)をコピーし、プレースホルダーをデータで置換して、PDFファイルを生成します。YOUR_TEMPLATE_ID
は、事前に作成した源泉徴収票のテンプレートドキュメントのIDに置き換えてください。テンプレートには、{{氏名}}
、{{住所}}
などのプレースホルダーを配置しておきます。
3. PDFファイルをGoogleドライブに保存する
生成したPDFファイルをGoogleドライブに保存する関数を作成します。
function savePdfToDrive(pdfBlob, fileName) {
// 保存先のフォルダIDを指定
const folderId = "YOUR_FOLDER_ID";
// フォルダを取得
const folder = DriveApp.getFolderById(folderId);
// PDFファイルを保存
const file = folder.createFile(pdfBlob).setName(fileName + ".pdf");
return file.getUrl();
}
この関数は、PDFファイル(pdfBlob
)とファイル名(fileName
)を受け取り、指定されたフォルダ(YOUR_FOLDER_ID
)にPDFファイルを保存します。YOUR_FOLDER_ID
は、保存先のGoogleドライブのフォルダIDに置き換えてください。
4. メイン関数
これらの関数を組み合わせたメイン関数を作成します。
function main() {
// シート名を指定
const sheetName = "〇〇部署";
// 従業員データを取得
const employeeData = getEmployeeData(sheetName);
// 従業員ごとに源泉徴収票を生成
employeeData.forEach(employee => {
const pdfBlob = generateWithholdingSlip(employee);
const fileName = employee["氏名"] + "_源泉徴収票";
const fileUrl = savePdfToDrive(pdfBlob, fileName);
Logger.log(employee["氏名"] + "の源泉徴収票を作成しました: " + fileUrl);
});
}
この関数は、指定されたシート名(sheetName
)の従業員データを取得し、各従業員に対して源泉徴収票を生成し、Googleドライブに保存します。sheetName
は、部署名に合わせて変更してください。
応用例と活用シーン
- 源泉徴収票の自動メール送信:生成された源泉徴収票を従業員に自動でメール送信することができます。
- 年末調整申告書の自動作成:源泉徴収票のデータを利用して、年末調整申告書を自動作成することができます。
- 税理士との連携:生成されたデータを税理士と共有し、スムーズな税務処理を実現できます。
年末調整準備における注意点
年末調整の準備においては、以下の点に注意する必要があります。
- 税法の改正:税法は頻繁に改正されるため、最新の情報を常に把握しておく必要があります。
- 個人情報の保護:従業員の個人情報は厳重に管理し、漏洩がないように対策を講じる必要があります。
- 従業員への周知:年末調整の手続きや必要な書類について、従業員に事前に周知しておく必要があります。
まとめ
GASを活用することで、年末調整の準備、特に源泉徴収票の作成を大幅に効率化できます。今回紹介したシステムは、一般企業における部門利用を想定していますが、企業の規模やニーズに合わせてカスタマイズ可能です。GASを積極的に活用し、年末調整業務の効率化を目指しましょう。