DriveApp.getFileByIdで経費精算を効率化!GASで始める財務自動化
経費精算は、月末にまとめて行うと時間と手間がかかり、担当者にとって大きな負担です。特に、領収書の数が多かったり、提出方法が煩雑だったりすると、従業員の満足度も低下してしまいます。そこで、Google Apps Script(GAS)と DriveApp.getFileById
を活用することで、経費精算プロセスを大幅に効率化し、財務部門の負担を軽減できます。この記事では、DriveApp.getFileById
の基本的な使い方から、経費精算業務を自動化するための具体的なコード例、よくある問題とその解決策、カスタマイズ方法まで詳しく解説します。
DriveApp.getFileByIdとは?
DriveApp.getFileById(id)
は、Google Drive APIの一部である DriveApp
サービスが提供するメソッドの一つです。このメソッドは、指定されたIDを持つファイルをGoogle Driveから取得するために使用されます。IDは、Google Drive上の各ファイルに割り当てられた一意の文字列です。ファイルIDを知っていれば、ファイル名や場所に関係なく、GASからそのファイルにアクセスできます。
DriveApp.getFileByIdの基本的な使い方
DriveApp.getFileById
を使用するには、まずファイルのIDを取得する必要があります。ファイルIDは、Google Drive上でファイルを開き、URLから確認できます。例えば、URLが https://drive.google.com/file/d/1234567890abcdefghijklmn/view
であれば、ファイルIDは 1234567890abcdefghijklmn
です。
ファイルIDを取得したら、以下のコードでファイルを取得できます:
function getFileByIdExample() {
const fileId = "1234567890abcdefghijklmn"; // ファイルIDをここに記述
const file = DriveApp.getFileById(fileId);
Logger.log(file.getName()); // ファイル名を表示
}
経費精算業務でのDriveApp.getFileByIdの実装方法
経費精算業務において、DriveApp.getFileById
は主に以下の場面で役立ちます。
- 領収書画像の自動取得
- 経費申請書の自動生成
- 承認ワークフローとの連携
領収書画像の自動取得
従業員が領収書の画像をGoogle Driveにアップロードする際、ファイルIDを特定の場所に記録しておけば、GASで自動的に領収書画像を取得できます。例えば、Googleフォームで領収書画像をアップロードしてもらい、その際にファイルIDも一緒に送信してもらうようにします。
function getReceiptImage() {
// スプレッドシートからファイルIDを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("領収書データ");
const fileId = sheet.getRange(2, 1).getValue(); // A2セルにファイルIDが入力されていると仮定
// DriveApp.getFileByIdでファイルを取得
try {
const file = DriveApp.getFileById(fileId);
Logger.log(file.getName());
// 取得したファイルに対する処理(例:特定のフォルダに移動)
// DriveApp.getFolderById("フォルダID").addFile(file);
} catch (e) {
Logger.log("ファイルが見つかりません: " + e);
}
}
経費申請書の自動生成
領収書画像からOCRで情報を読み取り、DriveApp.getFileById
で取得した領収書と紐付けて、経費申請書を自動生成できます。
function generateExpenseReport() {
// 領収書ファイルID(例:スプレッドシートから取得)
const receiptFileId = "領収書ファイルID";
// DriveApp.getFileByIdで領収書ファイルを取得
const receiptFile = DriveApp.getFileById(receiptFileId);
// 経費申請書を作成する処理(例:Googleドキュメントをコピーして作成)
const templateId = "経費申請書テンプレートID";
const templateFile = DriveApp.getFileById(templateId).makeCopy("経費申請書_" + receiptFile.getName());
const doc = DocumentApp.openById(templateFile.getId());
const body = doc.getBody();
// 領収書情報を経費申請書に転記(OCR処理は別途実装)
body.replaceText("{{領収書名}}", receiptFile.getName());
// ... その他の情報を転記 ...
doc.saveAndClose();
Logger.log("経費申請書を作成しました: " + templateFile.getUrl());
}
承認ワークフローとの連携
経費申請書が作成されたら、DriveApp.getFileById
で取得した申請書を承認者に自動的に共有し、承認状況を追跡できます。
function shareExpenseReport() {
// 経費申請書のファイルID
const reportFileId = "経費申請書ファイルID";
// DriveApp.getFileByIdで経費申請書ファイルを取得
const reportFile = DriveApp.getFileById(reportFileId);
// 承認者のメールアドレス
const approverEmail = "approver@example.com";
// 承認者にファイルを共有
reportFile.addEditor(approverEmail);
// 承認状況を記録する処理(例:スプレッドシートに記録)
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("承認状況");
sheet.appendRow([reportFile.getName(), approverEmail, new Date()]);
Logger.log("経費申請書を共有しました: " + reportFile.getUrl());
}
よくある問題とトラブルシューティング
- ファイルが見つからないエラー:ファイルIDが正しいか確認してください。また、GASを実行しているアカウントがファイルへのアクセス権を持っているか確認してください。
- 権限エラー:GASがGoogle Driveへのアクセス許可を持っているか確認してください。承認プロセスを再度実行する必要があるかもしれません。
- パフォーマンスの問題:大量のファイルを処理する場合、処理時間が長くなる可能性があります。非同期処理やバッチ処理を検討してください。
カスタマイズ方法と応用例
- OCR連携:Google Cloud Vision APIと連携して、領収書画像から自動的に情報を抽出できます。
- チャットボット連携:Google Chatと連携して、経費申請状況をチャットボットで確認できます。
- 会計システム連携:経費データを会計システムに自動的に連携できます。
まとめ
DriveApp.getFileById
を活用することで、経費精算業務を大幅に効率化できます。この記事で紹介したコード例を参考に、ぜひGASで経費精算の自動化に挑戦してみてください。日々の業務を自動化し、より戦略的な業務に集中できるようになるでしょう。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう