DriveApp.getFileByIdで経費精算を効率化!GASで始める財務自動化
経費精算は、月末にまとめて行うと時間と手間がかかり、ミスも起こりやすい業務です。特に、領収書が大量にある場合、一つ一つ確認するのは非常に大変です。そこで、Google Apps Script(GAS)と DriveApp.getFileById
を活用することで、経費精算プロセスを大幅に効率化できます。この記事では、DriveApp.getFileById
の基本的な使い方から、経費精算に特化した応用例、さらにはトラブルシューティングまでを詳しく解説します。
DriveApp.getFileByIdとは?
DriveApp.getFileById
は、Google Drive上のファイルをID指定で取得するためのGASの関数です。この関数を使うことで、ファイル名やフォルダ構造に依存せず、特定のファイルを確実に取得できます。
基本的な使い方
function getFileById(fileId) {
try {
const file = DriveApp.getFileById(fileId);
Logger.log(file.getName());
return file;
} catch (e) {
Logger.log("ファイルが見つかりません: " + e);
return null;
}
}
上記のコードでは、fileId
を引数として受け取り、対応するファイルをGoogle Driveから取得します。ファイルが存在しない場合は、エラーメッセージをログに出力します。
経費精算におけるDriveApp.getFileByIdの活用
経費精算では、領収書の画像やPDFファイルをGoogle Driveに保存し、それらのファイルIDをスプレッドシートに記録しておくことで、GASを使って一括処理できます。例えば、以下のような業務課題を解決できます。
- 大量の領収書ファイルの管理
- 領収書情報の自動抽出
- 経費精算レポートの自動生成
実装例1:領収書ファイルの一括取得
スプレッドシートに記載されたファイルIDをもとに、複数の領収書ファイルを一括で取得する例です。
function getReceiptFiles() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "領収書リスト";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
// ファイルIDのリストを取得(A列)
const fileIds = sheet.getRange("A2:A").getValues().flat().filter(String);
// ファイルを取得してログに出力
const files = [];
for (const fileId of fileIds) {
try {
const file = DriveApp.getFileById(fileId);
Logger.log("ファイル名: " + file.getName());
files.push(file);
} catch (e) {
Logger.log("ファイルが見つかりません: " + fileId + " - " + e);
}
}
return files;
}
カスタマイズ方法:スプレッドシートのID、シート名、ファイルIDが記載された列などを適宜変更してください。
実装例2:領収書情報の自動抽出
OCR(光学文字認識)技術と組み合わせることで、領収書画像から日付、金額、店舗名などの情報を自動で抽出できます。
// OCR APIの利用には、別途APIキーが必要です
function extractReceiptInfo(fileId) {
try {
const file = DriveApp.getFileById(fileId);
const blob = file.getBlob();
// OCR APIを呼び出す(例:Google Cloud Vision API)
// const ocrResult = callOcrApi(blob);
// ここではダミーデータを設定
const ocrResult = {
date: "2024-01-01",
amount: 1000,
storeName: "Example Store"
};
return ocrResult;
} catch (e) {
Logger.log("領収書情報の抽出に失敗: " + e);
return null;
}
}
カスタマイズ方法:OCR APIの呼び出し部分を、利用するAPIに合わせて実装してください。抽出した情報をスプレッドシートに書き込む処理を追加することで、経費精算レポートの自動生成も可能です。
実装例3:経費精算承認ワークフロー
領収書ファイルを指定のフォルダにアップロードすると、自動的に承認者にメール通知を送信するワークフローを構築できます。
function onFileUpload(e) {
// アップロードされたファイルのIDを取得
const fileId = e.fileId;
// ファイル情報を取得
const file = DriveApp.getFileById(fileId);
const fileName = file.getName();
const fileUrl = file.getUrl();
// 承認者のメールアドレス
const approverEmail = "approver@example.com";
// メールの件名と本文
const subject = "【経費精算】領収書がアップロードされました";
const body = `領収書「${fileName}」がアップロードされました。
確認してください:${fileUrl}`;
// メールを送信
MailApp.sendEmail(approverEmail, subject, body);
}
// トリガーの設定:DriveのonChangeイベントで実行
カスタマイズ方法:承認者のメールアドレス、メールの件名と本文、トリガーの条件などを適宜変更してください。
よくある問題とトラブルシューティング
- ファイルが見つからない:ファイルIDが正しいか、ファイルが削除されていないかを確認してください。
- 権限エラー:GASがファイルにアクセスする権限があるか確認してください。
- OCR APIのエラー:APIキーが有効か、APIの利用制限を超えていないか確認してください。
カスタマイズ方法と応用例
- 複数のフォルダ監視:複数のフォルダを監視し、アップロードされたファイルを自動処理する。
- 条件分岐:金額に応じて承認ルートを自動的に変更する。
- 外部システム連携:会計システムと連携し、経費データを自動的に連携する。
まとめ
DriveApp.getFileById
とGASを活用することで、経費精算業務を大幅に効率化できます。この記事で紹介したコード例を参考に、ぜひ自社の業務に合わせたカスタマイズをしてみてください。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう