Google Apps Scriptで月次領収書を自動メール送信したい【失敗編】

はじめに

Amazonやサーバーなどの月次の領収書管理に毎月1回とは言え、10分近くかかっています。

それをAI使って、完全自動化したい!

と、思い立って、色々試して、失敗した話を未来の自分のために残す。

決まった作業をAIにさせたかった

010コーヒー

毎月決まった日に、Amazonやサーバーに支払った領収書を、経理にメールで送りたいわけです。

「それぐらいちゃっちゃと終わらせろよ」という諫言が耳に刺さってきますが、無視して続けます。

これが地味に面倒なのですよ。

  • それぞれのサイトに移動して、
  • それぞれの場所から
  • 領収書をそれぞれダウンロードする
  • それをメールに添付して
  • 送信する

月に1回とはいえ、毎月決まったムーブ(かつ、ミスると面倒)なので、AIにやってもらおうとしました。

ただ…

AIさん

AIでは直接実装できません。

010コーヒー

ええ…

こんな感じで即答NGでした。

どうやらログインが必要なアカウントへのログインと、そこからダウンロードなどは難しいようです。

代替案として、Google Apps Script(無料)というものを提示してきた。

代替案:Google Apps Script

AIさん

ご存じないあなたのために要約しますと…

Google Apps Script(GAS):Googleが提供するJavaScriptベースのクラウド型スクリプト環境です。Gmail、スプレッドシート、ドライブなどのGoogle Workspace連携、自動化、機能拡張をブラウザ上で簡単に構築でき、特別な環境構築なしに無料(アカウント保有者)で利用できる強力な自動化ツールです。

010コーヒー

なるほどわからん。

自動化の設計図:手作業をコードに置き換える

010コーヒー

…とはいえ、分からなくてもAIさんに聞きつつ、できることをやっていこう。

自分を奮い立たせ、以下の手順を行いました。

  • PCでの準備
  • GASの設定
  • 実行
  • 実行の自動化

こんな感じです。

それぞれ解説します。

PCでの準備

現状、AIサイドではログインやダウンロードが厳しいとのことなので、ここを人力で行います。

領収書をダウンロードし、「26年〇月領収書」などと名付けたGoogle Driveフォルダへ保存していきます。

GASの設定

指定したフォルダ内に新しいPDFがあれば、それを自動で検知させます。

コードはこんな感じ。

function sendMonthlyReceipts() {
// ===== 設定 =====
const FOLDER_ID = “YOUR_FOLDER_ID_HERE”; // ステップ2でコピーしたフォルダID
const RECIPIENT_EMAIL = “company@example.com”; // 会社のメールアドレス

const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, ‘0’);
const SUBJECT = year + “年” + month + “月の領収書”;
const MESSAGE = “いつもお疲れ様です。\n\n毎月の領収書をお送りします。\n下記ファイルをご確認ください。\n\n—\n本メールは自動送信です。”;

try {
// フォルダ取得
const folder = DriveApp.getFolderById(FOLDER_ID);
const files = folder.getFiles();

// ファイルを配列に格納
const attachments = [];
let fileCount = 0;

while (files.hasNext()) {
const file = files.next();
attachments.push(file.getBlob());
fileCount++;
}

// ファイルがない場合はスキップ
if (attachments.length === 0) {
Logger.log(“⚠️ ファイルが見つかりません”);
return;
}

// メール送信
GmailApp.sendEmail(
RECIPIENT_EMAIL,
SUBJECT,
MESSAGE,
{ attachments: attachments }
);

Logger.log(“✓ メール送信完了”);
Logger.log(” 送信先:” + RECIPIENT_EMAIL);
Logger.log(” 件名:” + SUBJECT);
Logger.log(” 添付ファイル数:” + fileCount);

} catch (e) {
Logger.log(“❌ エラーが発生しました:” + e.toString());
}
}

AIさん

実行前に、以下は置き換えを行ってくださいね。

・YOUR_FOLDER_ID_HERE → Google Drive のフォルダID
・company@example.com → 会社のメールアドレス

実行

いざ実行!…と思って、上部の「実行」ボタンを押下したくても、グレーアウトしていて押せませんでした。

AIさん

「実行」ボタンを押下する前に、Google Apps Script プロジェクトを Google Drive に保存する必要があります。

010コーヒー

それ、僕が見つけたんだからね…(肝心なところはスルーするから困るぜ)

Ctrl+S、もしくはフロッピーディスク型のボタンを押下して、いったん保存しましょう。

そうすれば実行できるはず。

実行結果は画面下部に表示されるはずです。

実行の自動化

ここが上手くできなかったところです。

画面左側の時計マークをクリックすると、以下のような画面に移動します。

イメージとしては、「イベントのソースを選択」で、「カレンダーから」というものがあるので、そちらを選び、「カレンダーの詳細を入力」と出るので、そこにGoogleカレンダーのメアドをいれたら完了!

…というイメージなのですが、なぜかこれで完了できず、

上記のようなエラーとなってしまいます。

010コーヒー

再読み込みしてもできない…

※「時間ベース」のトリガータイプを選び、「1日」「午前〇時~〇時」などであれば、確定できました。カレンダー連携には、なにかプログラムが不足している?

実際に運用してみて感じたこと

010コーヒー

現状このような感じなので、まだ自動化というわけにはいきませんが、もう少し頑張ればいいところまでいけそうです。

各サイトから領収書を落とし、そのまま「領収書フォルダ」へドラッグ&ドロップする。

作業はそれだけです。あとはGASが、誰にも気づかれない速さで、淡々とメールを送り届けてくれます。

「AIで全てを自動化する」という当初の目的は果たせませんでした。

しかし、AIという相談相手がいたからこそ、GASという便利な道具に辿り着けました。


まとめ

一度仕組みを構築してしまえば、それは自分だけの小さな相棒として働き続けてくれます。

もし、あなたが毎月のルーティンに数分を奪われているのなら、一度試してみてはいかがでしょうか。

010コーヒー

自動化ではなく「遠隔操作」だけど、こういうアイテムも紹介してます。

Verified by MonsterInsights