Gmailのスター付きメールを予算管理に活用!GmailMessage.isStarredで経費精算を効率化

Gmailのスター付きメールを予算管理に活用!GmailMessage.isStarredで経費精算を効率化

Gmailのスター機能を活用して、財務・会計業務、特に予算管理や経費精算を効率化する方法をご紹介します。GmailMessage.isStarred関数を利用することで、スター付きメールを簡単に抽出し、必要な情報を整理できます。この記事では、具体的なコード例を交えながら、その実装方法と応用例を解説します。

GmailMessage.isStarredとは

GmailMessage.isStarred()は、GAS(Google Apps Script)でGmailのメッセージがスター付きかどうかを判定する関数です。この関数を使うことで、特定の条件に合致するメール(例えば、経費精算に必要な領収書メール)にスターを付けておき、後からGASでまとめて処理するといったことが可能になります。

基本的な使い方

まず、GmailAppサービスを使ってGmailにアクセスし、特定のメッセージを取得します。その後、isStarred()メソッドを使って、そのメッセージがスター付きかどうかを判定します。

function checkStarred() {
const threads = GmailApp.search('subject:領収書');
for (const thread of threads) {
const messages = thread.getMessages();
for (const message of messages) {
if (message.isStarred()) {
console.log('スター付きの領収書メールが見つかりました: ' + message.getSubject());
}
}
}
}

予算管理・経費精算での実装方法

ここでは、GmailMessage.isStarredを予算管理と経費精算に特化して活用する具体的な方法を解説します。

1. 経費精算用スター付きメールの抽出

経費精算に必要な領収書メールにスターを付けておき、GASでそれらのメールを抽出してスプレッドシートにまとめる例です。

function extractStarredReceipts() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('経費精算');
if (!sheet) {
ss.insertSheet('経費精算');
sheet = ss.getSheetByName('経費精算');
sheet.appendRow(['日付', '金額', '摘要']);
}

const threads = GmailApp.search('subject:領収書');
for (const thread of threads) {
const messages = thread.getMessages();
for (const message of messages) {
if (message.isStarred()) {
// ここで領収書メールから必要な情報を抽出する処理を追加
// 例:日付、金額、摘要を抽出
const date = message.getDate();
const body = message.getPlainBody();
const amount = extractAmount(body); // 金額を抽出する関数(下記参照)
const description = '領収書'; // 摘要を固定で設定

sheet.appendRow([date, amount, description]);
message.unstar(); // 処理が終わったらスターを外す(オプション)
}
}
}
}

// メール本文から金額を抽出する関数(正規表現を使用)
function extractAmount(body) {
const regex = /金額:.*?(\d+)/;
const match = body.match(regex);
if (match && match[1]) {
return parseInt(match[1]);
} else {
return '金額不明';
}
}

このコードでは、まず「経費精算」という名前のスプレッドシートを作成し、領収書の件名で検索したメールの中からスター付きのものを抽出します。そして、メールから日付、金額、摘要を抽出し、スプレッドシートに追記します。処理が終わったメールのスターを外す処理も入れています(オプション)。

2. 予算超過アラート

特定のキーワード(例: 「請求書」)を含むスター付きメールを受信した場合に、予算超過の可能性があるとしてアラートを出す例です。

function checkBudgetAlert() {
const threads = GmailApp.search('subject:請求書 is:starred');
if (threads.length > 0) {
// 予算超過のアラートを出す処理
// 例:スプレッドシートに記録、メールで通知
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('予算管理');

if (!sheet) {
ss.insertSheet('予算管理');
sheet = ss.getSheetByName('予算管理');
sheet.appendRow(['日付', '内容']);
}

const now = new Date();
sheet.appendRow([now, '請求書のスター付きメールを受信。予算超過の可能性あり']);

MailApp.sendEmail(
Session.getActiveUser().getEmail(),
'【予算超過アラート】請求書のスター付きメールを受信',
'予算超過の可能性があります。スプレッドシートを確認してください。'
);
}
}

このコードは、件名に「請求書」が含まれ、かつスターが付いているメールを検索します。もし該当するメールが見つかった場合、「予算管理」という名前のスプレッドシートに日付と内容を記録し、さらにメールで通知します。

よくある問題とトラブルシューティング

  • スター付きメールが抽出されない:検索条件が正しいか確認してください。GmailApp.search()の引数を確認し、is:starredが含まれているか確認してください。
  • 金額が正しく抽出されない:extractAmount()関数の正規表現が、メールのフォーマットに合っているか確認してください。必要に応じて正規表現を修正してください。
  • スプレッドシートへの書き込みがうまくいかない:スプレッドシートのIDが正しいか、GASからスプレッドシートへのアクセス権があるか確認してください。

カスタマイズ方法と応用例

  • 領収書以外のメールにも対応:検索条件を変更することで、領収書以外のメール(例えば、銀行の入出金明細)にも対応できます。
  • 定期実行:トリガーを設定することで、このスクリプトを定期的に実行し、自動的に経費精算の準備をすることができます。
  • 他のサービスとの連携:Google DriveやSlackなど、他のサービスと連携することで、さらに高度な自動化が可能です。

まとめ

GmailMessage.isStarred関数とGASを組み合わせることで、Gmailのスター機能を活用した効率的な予算管理・経費精算が実現できます。この記事で紹介したコード例を参考に、ぜひご自身の業務に合わせてカスタマイズしてみてください。

PR

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

CodeCampで理想の働き方を実現しよう