Gmailの添付ファイルをGoogleドライブに自動保存する方法を、GASおじがわかりやすく解説するぞ。中小企業の経営者やフリーランスの皆さん、日々のメールの添付ファイル管理で手間取ってないかな?この自動化で作業時間を削減し、SaaSの追加費用もかけずに効率化を図ろう。
■ なぜGmailの添付ファイルを自動保存するのか?
メールの添付ファイルを手動でダウンロードし、整理するのは時間がかかるし、うっかりファイルを見失うリスクもある。Google Apps Script(以下GAS)を使えば、Gmailの特定条件のメールから添付ファイルを抽出し、Googleドライブの指定フォルダへ自動で保存できる。これにより、
・手作業のミスを減らす
・保存場所が一元化される
・作業時間の短縮とコスト削減
を実現可能だ。
ただし、GASはGoogleアカウントの利用枠内で動作し、追加の専用SaaS料金は不要。ただしquotaや実行時間上限はあるので、その範囲で賢く使おう。
■ 初期設定と必要な権限
まずは以下を準備しよう。
・Googleドライブに保存用フォルダを作成添付ファイルを保存するためのフォルダを作る。フォルダIDはスクリプトで使うので控えておく。
・GASプロジェクトを作成GoogleスプレッドシートやGASエディタから新規スクリプトを作成。
・GmailとGoogleドライブの権限付与スクリプト初回実行時にGmailとGoogleドライブへのアクセス許可を求められる。必ず承認しよう。
・installable triggerの設定添付ファイルの自動保存は「時間主導型トリガー」を使うのが一般的。1時間に1回など定期実行を設定しよう。
■ 具体的なコード例
以下はGmailの受信トレイ内で、件名に「請求書」が含まれるメールの添付ファイルを指定フォルダに保存し、新規の日時付きスプレッドシートに保存したファイル名を記録する例だ。
ポイントは
・既存のデータを上書きせず、新規ファイルを作成して記録する
・添付ファイルの重複保存を防ぐためにメールIDで管理(batch writeでまとめて保存)
・万が一の復元用にバックアップも考慮
function saveAttachmentsToDrive() {
const folderId = 'あなたのフォルダIDをここに入れる';
const driveFolder = DriveApp.getFolderById(folderId);
// 保存記録用スプレッドシートを新規作成(日時付き)
const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
const ss = SpreadsheetApp.create('添付ファイル保存記録_' + timestamp);
const sheet = ss.getActiveSheet();
sheet.appendRow(['メールID', '件名', '添付ファイル名', '保存ファイルID', '保存日時']);
// Gmail検索クエリ(例:subject:請求書 is:unread)
const query = 'subject:請求書 in:inbox';
const threads = GmailApp.search(query);
// 既に保存済みのメールIDを取得(今回は新規なので空)
// 過去実装ではプロパティサービスなどで管理可能だが今回は省略
let saveCount = 0;
for (const thread of threads) {
const messages = thread.getMessages();
for (const message of messages) {
const messageId = message.getId();
// 添付ファイルを取得
const attachments = message.getAttachments();
if (attachments.length === 0) continue;
for (const file of attachments) {
// Googleドライブに保存(同名ファイル重複時は別ファイルとして保存)
const savedFile = driveFolder.createFile(file.copyBlob());
// 保存記録をスプレッドシートに追加
sheet.appendRow([
messageId,
message.getSubject(),
file.getName(),
savedFile.getId(),
new Date()
]);
saveCount++;
}
}
}
Logger.log(`添付ファイルを${saveCount}件保存しました。`);
}
□ ポイント解説
・添付ファイルはcopyBlob()でコピーし、新規ファイルとしてGoogleドライブへ保存。
・保存履歴は新規作成したスプレッドシートに行単位で追記(batch write的処理)。
・メールIDで管理すれば、重複実行時に同じメールからの添付ファイルを二重保存しにくい。
・削除APIは一切使わず、既存データは更新しない設計。
・実行時間が長くならないようメール数を調整したり、途中結果をプロパティサービスなどで管理して分割処理も検討可能。
■ 個人情報の取り扱いと復元手順
メールや添付ファイルには個人情報が含まれることもある。スクリプトの実行権限は自分のGoogleアカウントに限定し、不特定多数がアクセスできる場所での実行は避けよう。
バックアップや復元は、
・スプレッドシートの保存記録で対象ファイルを特定し、
・Googleドライブの保存先フォルダからファイルを手動で確認・復元可能。
万一ファイルが誤って消えた場合も、削除はしない設計なので基本的には元のファイルが残り続ける。
■ 導入によるコスト削減イメージ
仮に1日平均10通の請求書メールがあり、添付ファイルの手動ダウンロード・整理に1通あたり2分かかっているとしよう。
・10通 × 2分 = 20分/日
・月20営業日 × 20分 = 400分 = 約6.7時間/月
・時給2,000円換算 → 6.7時間 × 2,000円 = 13,400円/月の価値
GASによる自動保存はGoogleアカウントの利用枠内で追加専用SaaS料金なし。ただし、GASのquotaや実行時間上限はあるため、処理量が多い場合は分割実行など検討を。
□ まとめ
Gmailの添付ファイルをGoogleドライブに自動保存するスクリプトは、中小企業やフリーランスの方々の業務効率化に役立つ。SaaSの追加課金なしでGoogleアカウントの枠内で動作し、運用方法や権限管理に気を付ければ安心して使えるぞ。
【ポイント】
・既存データを消さず、新規ファイル・スプレッドシートで記録すること
・installable triggerで定期実行し、手動作業を減らすこと
・個人情報の取り扱いに十分注意すること
ぜひ、この自動化を活用して手間を減らし、経営や業務に集中してほしい。GASおじも応援してるぞ!
■ GASの相談や導入サポートを見たい方へ
この記事と近い作業をGoogleシートやGASで整えたい方は、Gasおじのココナラ出品一覧もご覧ください。
■ 関連サービス
GASおじのココナラ出品一覧
日々の記録、確認、通知、投稿準備などを、GoogleスプレッドシートとGASで無理なく自動化する相談ができます。