GASで経費精算を効率化!Folder.addFileで証拠書類を自動整理
経費精算は、月末にまとめて行うと時間がかかり、ミスも起こりやすい業務です。特に、領収書やレシートといった証拠書類の管理は煩雑になりがちです。本記事では、Google Apps Script(GAS)のFolder.addFile関数を利用して、経費精算の証拠書類を自動で整理し、業務効率を大幅に改善する方法をご紹介します。
Folder.addFile関数の基本
Folder.addFile関数は、Google Driveのフォルダにファイルを移動またはコピーするために使用します。この関数を使うことで、GASから特定のファイルを指定のフォルダに簡単に格納できます。
構文:
folder.addFile(file)
folder: ファイルを追加するフォルダオブジェクト。file: 追加するファイルオブジェクト。
経費精算におけるFolder.addFileの活用
経費精算の証拠書類(領収書、レシートなど)を特定のフォルダに自動で整理することで、以下のようなメリットがあります。
- 書類の紛失防止: 証拠書類をクラウド上に一元管理することで、紛失のリスクを低減できます。
- 検索性の向上: フォルダ構造を工夫することで、必要な書類を素早く見つけられます。
- 監査対応の効率化: 監査時に必要な書類をまとめて提示できます。
実用的なコード例
1. スプレッドシートからファイルIDを取得してフォルダに保存
スプレッドシートに記載されたファイルIDをもとに、ファイルを指定のフォルダに保存する例です。
function moveFileToExpenseFolder() {
// スプレッドシートIDとシート名、フォルダIDを設定
const ssId = 'YOUR_SPREADSHEET_ID';
const sheetName = '経費精算';
const folderId = 'YOUR_FOLDER_ID';
// スプレッドシートとフォルダを取得
const ss = SpreadsheetApp.openById(ssId);
const sheet = ss.getSheetByName(sheetName);
const folder = DriveApp.getFolderById(folderId);
// ファイルIDが記載されている列番号を指定(A列なら1)
const fileIdColumn = 2; // 例:B列
// 開始行(データが始まる行)
const startRow = 2;
// 最終行を取得
const lastRow = sheet.getLastRow();
// ファイルを移動
for (let i = startRow; i <= lastRow; i++) {
const fileId = sheet.getRange(i, fileIdColumn).getValue();
//ファイルIDが空の場合はスキップ
if (!fileId) continue;
try {
const file = DriveApp.getFileById(fileId);
folder.addFile(file);
Logger.log('ファイル ' + file.getName() + ' を移動しました。');
} catch (e) {
Logger.log('ファイルID ' + fileId + ' のファイルが見つかりません: ' + e);
}
}
}
2. フォーム送信時に自動でファイルをフォルダに保存
Googleフォームで領収書の画像をアップロードしてもらい、送信されたファイルを自動でフォルダに保存する例です。フォームの回答シートからファイルIDを取得します。
function onFormSubmit(e) {
// フォルダIDを設定
const folderId = 'YOUR_FOLDER_ID';
// フォルダを取得
const folder = DriveApp.getFolderById(folderId);
// フォームの回答からファイルIDを取得(フォームの回答の列番号に合わせて変更)
const fileId = e.response.getItemResponses()[0].getResponse();
// ファイルを取得してフォルダに移動
try {
const file = DriveApp.getFileById(fileId);
folder.addFile(file);
Logger.log('ファイル ' + file.getName() + ' を移動しました。');
} catch (e) {
Logger.log('ファイルID ' + fileId + ' のファイルが見つかりません: ' + e);
}
}
3. メールに添付されたファイルを自動保存
特定のラベルが付いたメールから添付ファイルを取得し、特定のフォルダへ保存する例です。
function saveAttachmentsToFolder() {
// フォルダIDとラベル名を設定
const folderId = 'YOUR_FOLDER_ID';
const labelName = '経費精算';
// フォルダとラベルを取得
const folder = DriveApp.getFolderById(folderId);
const label = GmailApp.getUserLabelByName(labelName);
// ラベルが付いたスレッドを取得
const threads = label.getThreads();
// スレッド内のメッセージを処理
for (let i = 0; i < threads.length; i++) {
const messages = threads[i].getMessages();
// メッセージ内の添付ファイルを処理
for (let j = 0; j < messages.length; j++) {
const message = messages[j];
const attachments = message.getAttachments();
// 添付ファイルをフォルダに保存
for (let k = 0; k < attachments.length; k++) {
const attachment = attachments[k];
folder.addFile(attachment);
Logger.log('添付ファイル ' + attachment.getName() + ' を保存しました。');
}
}
// スレッドからラベルを削除 (処理済みのスレッドを区別するため)
threads[i].removeLabel(label);
}
}
よくある問題とトラブルシューティング
- ファイルが見つからない: ファイルIDが間違っている可能性があります。スプレッドシートやフォームの回答を確認してください。
- フォルダにファイルを追加できない: フォルダIDが間違っているか、GASにフォルダへのアクセス権がない可能性があります。
- スクリプトの実行権限: GASの初回実行時には、Googleアカウントへのアクセス許可が必要です。
カスタマイズ方法と応用例
- フォルダ構造の自動作成: 月ごとにフォルダを自動作成し、証拠書類を整理できます。
- ファイル名の自動変更: ファイル名に日付や金額などの情報を付与することで、検索性を向上させることができます。
- エラー通知: ファイルの移動に失敗した場合に、担当者にメールで通知することができます。
まとめ
GASのFolder.addFile関数を活用することで、経費精算の証拠書類管理を自動化し、業務効率を大幅に改善できます。ぜひ本記事で紹介したコード例を参考に、自社の経費精算フローに合わせたカスタマイズを行ってみてください。
PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう