見出し画像

Apple領収書を回収しよう!〜GASで自動化&ノーストレスな管理術〜


目次


はじめに

Twitterでのみなさんの反応が嬉しく、noteを投稿することにしました。

皆さん、iPhone🍎を購入した後の事務処理は面倒ですよね。
領収書の整理、皆さんはどのように行っていますか?

手動での領収書管理の問題点

私の場合、以前は以下の手順で領収書を管理していました:

  1. Gmailで「noreply@email.apple.com」を検索

  2. メールを開いてPDFをダウンロード

  3. Googleドライブに保存

この繰り返し作業は、本当に時間と労力の無駄だと感じていました。そこで、自動化に挑戦することにしました!

GASで領収書管理を自動化!

みなさん「GAS(Google Apps Script)」をご存じですか?
簡単に言うと、Googleの中のサービスを自動化するためのツールです。

GASでできること:

GASでは様々なことが自動化できます
1. Gmailの自動操作
• メールを自動で送ったり、古いメールを削除したりできる。
2. スプレッドシートの操作
• データを追加したり、計算したり、自動で更新できる。
3. カレンダーの操作
• Googleカレンダーに予定を入れたり、通知を送ったりできる。
4. Googleドライブの操作
• ファイルを整理したり、バックアップを作ったりできる。などなど。

難しそうに感じますが、やりたいことをChatGPTの助けを借りて整理すれば安心です。コードの知識がゼロの私でも、AIのサポートでスムーズに進めることができました。

実際に使ったGASコード

以下は、Gmailから特定のアドレス(今回はApple)を指定し、領収書のPDFを取得し、Googleドライブに保存するGASコードです。

copy// function logEmailsWithPDF() {

 // 定数の設定
 const SHEET_ID = '1p9qjbYWKPGp6vwkT61fOA45455hZPYDkEiGkdVgsU4k';
 const SHEET_NAME = 'シート1';
 const FOLDER_ID = '1uI3rS53VG37maTzw4545jqYkDjTDfZ';
 const QUERY = 'from:noreply@email.apple.com has:attachment';

 // スプレッドシートとフォルダの初期化
 const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
 const folder = DriveApp.getFolderById(FOLDER_ID);

 // ヘッダー行の確認と追加
 if (sheet.getLastRow() === 0) {
   sheet.appendRow(['受信日', '受信時間', 'PDFリンク', 'ファイル名']);
   Logger.log('ヘッダーを追加しました。');
 }

 // 既存のPDFリンクを取得
 let existingLinks = [];
 const lastRow = sheet.getLastRow();
 if (lastRow > 1) {
   existingLinks = sheet.getRange(2, 3, lastRow - 1).getValues().flat();
   Logger.log('既存のPDFリンクを取得しました: ' + existingLinks.length + ' 件のリンク');
 }

 // Gmailの検索
 const threads = GmailApp.search(QUERY);
 Logger.log('検索結果: ' + threads.length + ' 件のスレッドが見つかりました。');

 threads.forEach(function(thread) {
   const messages = thread.getMessages();

   messages.forEach(function(message) {
     const receivedDate = message.getDate();
     const receivedDateString = Utilities.formatDate(receivedDate, Session.getScriptTimeZone(), 'yyyy/MM/dd');
     const receivedTimeString = Utilities.formatDate(receivedDate, Session.getScriptTimeZone(), 'HH:mm:ss');

     // 添付ファイルの処理
     const attachments = message.getAttachments();

     attachments.forEach(function(attachment) {
       if (attachment.getContentType() === 'application/pdf') {
         const fileName = attachment.getName();
         const pdfLink = 'https://mail.google.com/mail/u/0/#inbox/' + thread.getId();

         // 重複チェック
         if (existingLinks.includes(pdfLink)) {
           return;
         }

         // ファイルを保存
         const file = DriveApp.createFile(attachment);
         folder.addFile(file);
         DriveApp.getRootFolder().removeFile(file);

         // スプレッドシートにデータ記録
         sheet.appendRow([receivedDateString, receivedTimeString, pdfLink, fileName]);
         existingLinks.push(pdfLink);
       }
     });
   });
 });

 Logger.log('処理が完了しました。');
}

コードを自分用にカスタマイズする方法

このコードを使用するには、スプレッドシートIDGoogleドライブのフォルダIDを自身のものに変更する必要があります。以下に簡単な方法を2つご紹介します。

  1. ChatGPTに任せる方法
    コードをコピーし、ChatGPTに「このコードを自分のスプレッドシートとGoogleドライブのIDに変更して」と依頼するだけで、変更後のコードを生成してくれます。

  2. 自動化アプリを使う方法
    DifyというAIツールでアプリを作成しました! スプレッドシートとGoogleドライブのURLを入力するだけで、あなた専用のGASコードが生成されます。(https://udify.app/workflow/X7l2FSZHjMq3DSo0

共通手順

  1. Googleドライブ内に新規フォルダを作成。

  2. 新規スプレッドシートを作成。

  3. シート名はこだわりなければ「シート1」のまま。

  4. GoogleドライブのURLをコピー。

  5. スプレッドシートのURLをコピー。


パターン①: GASコードを直接修正

  1. noteのGASコードをから自分のGoogleドライブフォルダIDとスプレッドシートIDを差し替え。(手動でもChatGPT使っても可)

  2. コードを保存


パターン②: Difyを利用して自動でGASコード作成

  1. アプリ(https://udify.app/workflow/X7l2FSZHjMq3DSo0)を起動。

  2. GoogleドライブのURLを入力。

  3. スプレッドシートURLを入力。

  4. アプリを実行。

  5. 生成されたGASコードを保存。


実際に動かしてみた!


作成したコードを実行してみました。

動画を用意しましたので、ぜひ参考にしてください!


⬇️コレにはGASのスプレッドシートでの実行手順も載ってます

参考にした記事はこちらです:
https://zenn.dev/gas/articles/0c351e40282ba9

次回のnote予告

次回は、PDFの内容を文字起こししてスプレッドシートに記載する方法をシェアするかもです。

予告動画

実際使われた方がいればコメントで教えてください!
次の記事を書く励みになります
🙇‍♂️

役に立ったよって人は100円募金してくれたらうれしいです🍎


#GAS #GoogleAppsScript #自動化 #Apple #領収書 #iPhone #事務処理 #ChatGPT #Dify #生産性向上 #時短術

ここから先は

19字

¥ 100

期間限定!Amazon Payで支払うと抽選で
Amazonギフトカード5,000円分が当たる

この記事が気に入ったらチップで応援してみませんか?