スプレッドシートを使った経費精算自動化:SpreadsheetApp.getActiveSpreadsheet徹底活用
経費精算は、企業規模に関わらず、時間と手間がかかる業務です。従業員は領収書を整理し、申請書を作成し、経理担当者はそれらをチェックして承認する必要があります。このプロセスを効率化するために、Google Apps Script(GAS)とスプレッドシートを活用した自動化が有効です。特にSpreadsheetApp.getActiveSpreadsheet()
は、現在アクティブなスプレッドシートを取得するための基本的な関数であり、これを活用することで、様々な経費精算処理を自動化できます。
SpreadsheetApp.getActiveSpreadsheet()とは
SpreadsheetApp.getActiveSpreadsheet()
は、GASでスプレッドシートを操作する際に、現在開いているスプレッドシートへの参照を取得するために使用します。この関数を使うことで、特定のIDを指定することなく、アクティブなスプレッドシートにアクセスし、データの読み書きや操作を行うことができます。
基本的な使い方
function getActiveSpreadsheet() {
// アクティブなスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// スプレッドシートの名前をログに出力
console.log(ss.getName());
}
経費精算自動化の実装例
ここでは、SpreadsheetApp.getActiveSpreadsheet()
を活用した、具体的な経費精算自動化の例をいくつか紹介します。
1. 経費申請フォームの自動作成
従業員が経費申請を行うためのフォームを自動で作成します。特定のテンプレートシートをコピーし、申請者の名前や日付を自動で入力します。
function createExpenseForm() {
// アクティブなスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// テンプレートシートを指定
const templateSheet = ss.getSheetByName("テンプレート");
// 新しいシート名を作成(例:日付+申請者名)
const newSheetName = Utilities.formatDate(new Date(), "JST", "yyyyMMdd") + "_経費申請";
// テンプレートをコピーして新しいシートを作成
templateSheet.copyTo(ss).setName(newSheetName);
// 新しいシートを取得
const newSheet = ss.getSheetByName(newSheetName);
// 申請日を自動入力
newSheet.getRange("B2").setValue(Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd"));
// 申請者名を自動入力(ここでは仮に固定)
newSheet.getRange("B3").setValue("山田太郎");
}
2. 領収書情報の自動読み取り(OCR連携)
Google Cloud Vision APIなどのOCR(光学文字認識)サービスと連携し、領収書の画像をスプレッドシートに自動入力します。
(※ OCR連携には、Google Cloud Platformの設定とAPIキーが必要です。ここではGASのコード例のみ示します。)
function readReceiptData() {
// アクティブなスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 領収書データが記載されたシートを指定
const receiptSheet = ss.getSheetByName("領収書データ");
// OCRで読み取った領収書画像URLを取得(ここでは仮に固定)
const imageUrl = "https://example.com/receipt.jpg";
// TODO: Google Cloud Vision API連携処理(APIキー設定、リクエスト送信、レスポンス解析)
// 上記処理でOCR結果(金額、日付、店名など)を取得
// (仮のOCR結果)
const amount = 1200;
const date = "2024/01/15";
const storeName = "Exampleストア";
// スプレッドシートにOCR結果を書き込む
receiptSheet.getRange("B2").setValue(date);
receiptSheet.getRange("C2").setValue(storeName);
receiptSheet.getRange("D2").setValue(amount);
}
3. 経費科目の自動分類
領収書の内容から、経費科目を自動で分類します。例えば、特定のキーワードが含まれていれば「交通費」、別のキーワードが含まれていれば「会議費」といったルールを設定します。
function categorizeExpense() {
// アクティブなスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 経費データが記載されたシートを指定
const expenseSheet = ss.getSheetByName("経費データ");
// 摘要欄の文字列を取得
const description = expenseSheet.getRange("C2").getValue();
// 経費科目を判定
let category = "その他";
if (description.includes("交通費")) {
category = "交通費";
} else if (description.includes("会議費")) {
category = "会議費";
}
// 経費科目を書き込む
expenseSheet.getRange("D2").setValue(category);
}
4. 承認ワークフローの自動化
経費申請が提出された際に、自動で承認者にメールを送信し、承認結果をスプレッドシートに反映します。
function sendApprovalRequest() {
// アクティブなスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 経費申請データが記載されたシートを指定
const requestSheet = ss.getSheetByName("経費申請");
// 申請者の名前、金額などを取得
const applicantName = requestSheet.getRange("B3").getValue();
const amount = requestSheet.getRange("F2").getValue();
// 承認者のメールアドレス(ここでは仮に固定)
const approverEmail = "approver@example.com";
// メールの件名と本文を作成
const subject = "【経費申請】" + applicantName + "さんの申請";
const body = applicantName + "さんから経費申請が提出されました。
金額: " + amount + "円
スプレッドシートを確認して承認してください: " + ss.getUrl();
// メールを送信
MailApp.sendEmail(approverEmail, subject, body);
// 承認状況を「申請中」に更新
requestSheet.getRange("H2").setValue("申請中");
}
経費精算自動化でよくある問題とトラブルシューティング
- GASの実行権限エラー: スクリプトの初回実行時に権限の承認が必要です。
- スプレッドシートIDの間違い:
SpreadsheetApp.openById()
を使用する場合、正しいスプレッドシートIDを指定してください。SpreadsheetApp.getActiveSpreadsheet()
を使用する場合は、アクティブなシートであることを確認してください。 - OCR連携のAPI制限: Google Cloud Vision APIには無料枠がありますが、上限を超えると課金されます。
- タイムゾーンの問題: GASのタイムゾーンはデフォルトでUTCです。日本時間(JST)で処理する場合は、
Utilities.formatDate()
などでタイムゾーンを指定してください。
カスタマイズ方法と応用例
- 経費科目の自動判定ルールの追加: より詳細なキーワードを設定することで、自動判定の精度を向上させることができます。
- 承認フローの柔軟な設定: 承認金額に応じて承認者を変更したり、複数承認者を設定したりすることができます。
- 会計システムとの連携: 経費データを会計システムに自動的に連携することで、経理業務全体を効率化できます。
- チャットツールとの連携: 経費申請や承認状況をチャットツール(例:Slack, Google Chat)に通知することができます。
まとめ
SpreadsheetApp.getActiveSpreadsheet()
を活用することで、スプレッドシートを使った経費精算業務を大幅に自動化できます。この記事で紹介したコード例を参考に、自社の業務フローに合わせたカスタマイズを行い、経費精算業務の効率化を実現してください。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう