毎日届くメールを手動でアーカイブするのは手間がかかりますね。特に重要なメールをドキュメントとして保存したい場合、コピー&ペーストの作業が発生します。GoogleドキュメントとGmailをApps Scriptで連携すれば、受信メールから自動的にドキュメントが作成され、メールは自動でアーカイブされます。この記事では、その設定手順を詳しく解説します。
【要点】Apps ScriptでGmail受信メールを自動的にドキュメント化・アーカイブする方法
- GmailApp.search() で条件指定: 特定のラベルや件名でメールを絞り込み、未読メールのみを処理します。
- DocumentApp.create() でドキュメント作成: メール本文と件名を新しいドキュメントに書き込み、フォルダに整理します。
- Time-driven trigger で定期実行: 1時間おきなどのトリガーを設定し、完全自動化を実現します。
ADVERTISEMENT
目次
Apps ScriptでGmailとドキュメントを連携する仕組み
Apps ScriptはGoogleのサービスを自動化するためのスクリプト言語です。GmailAppクラスを使うと、Gmailのメールを検索・取得・アーカイブできます。DocumentAppクラスを使えば、Googleドキュメントを新規作成・編集できます。この2つを組み合わせることで、受信メールの内容を自動的にドキュメント化し、メールをアーカイブする処理が可能です。スクリプトの実行はタイムドリブントリガーで定期的に行うため、完全に自動で動作します。
事前に必要なものは、Googleアカウントと、スクリプトを実行するためのGmailとドキュメントの権限のみです。特別なアドオンや外部サービスは不要です。スクリプトエディタはGoogleドキュメントやスプレッドシートから開けますが、この記事ではスタンドアロンのスクリプトを作成する方法を説明します。
Gmail受信メールを自動でドキュメント化する設定手順
スクリプトエディタを開く
- Googleドライブから新規スクリプトを作成
Googleドライブの「新規」→「その他」→「Google Apps Script」を選択します。すると、空のスクリプトエディタが開きます。 - プロジェクト名を設定
画面左上の「無題のプロジェクト」をクリックし、わかりやすい名前(例:「メール自動ドキュメント化」)に変更します。
スクリプトコードを記述する
- 関数を作成
デフォルトで表示される myFunction() を削除し、以下のように関数を記述します。関数名は archiveMailsToDocs などにします。 - Gmailの検索条件を設定
GmailApp.search() に検索クエリを渡します。例えば、特定のラベル「要対応」が付いた未読メールを探す場合は ‘label:要対応 is:unread’ と指定します。 - 各メールを処理するループ
forループを使って各メールスレッドを取得し、getMessages() でメッセージを取得します。最初のメッセージの件名と本文を変数に格納します。 - ドキュメントを作成して内容を書き込む
DocumentApp.create(件名) で新規ドキュメントを作成し、getBody().appendParagraph(本文) で本文を追加します。必要に応じて日時や送信者情報も追加します。 - メールをアーカイブ
処理が完了したら、message.moveToArchive() でメールをアーカイブします。これで受信トレイから自動的に移動されます。
トリガーを設定する
- トリガー画面を開く
スクリプトエディタの左メニューから時計アイコン(トリガー)をクリックします。右下の「トリガーを追加」をクリックします。 - 実行頻度を選択
「時間ベースのトリガー」を選び、「時間間隔」を「1時間おき」などに設定します。これにより、1時間ごとにスクリプトが自動実行されます。 - 権限を承認
初回実行時に権限の承認画面が表示されます。必要なスコープ(Gmailの読み取り・アーカイブ、ドキュメントの作成)を確認し、許可します。
以下は実際に動作するスクリプトの例です。このコードをそのままコピーして使うこともできます。
function archiveMailsToDocs() {
var threads = GmailApp.search('label:要対応 is:unread');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var subject = message.getSubject();
var body = message.getPlainBody();
var doc = DocumentApp.create(subject);
doc.getBody().appendParagraph('送信者: ' + message.getFrom());
doc.getBody().appendParagraph('日時: ' + message.getDate());
doc.getBody().appendParagraph(body);
message.moveToArchive();
}
}
}
自動化で発生しやすいトラブルとその対処法
スクリプトの実行時間制限を超えてしまう
Apps Scriptには1回の実行につき6分という制限があります。大量のメールを処理する場合は、メール数を制限するか、トリガーの間隔を短くして分割実行します。GmailApp.search()で検索結果に上限を設ける方法もあります。
権限の承認がうまくいかない
スクリプト初回実行時に承認画面が表示されない場合は、スクリプトエディタの「実行」ボタンから手動で関数を実行し、承認を促します。また、Google Workspaceアカウントの管理者が制限している可能性もあります。
作成したドキュメントが重複する
同じ条件のメールが複数回来た場合、同じ件名のドキュメントが複数作成されます。対策として、ドキュメント名に日時やユニークIDを追加して重複を防ぎます。既存のドキュメントを確認してから作成するロジックも追加できます。
Gmailのラベルが正しく適用されない
検索クエリで指定したラベルが存在しない場合、エラーにはなりませんが該当メールが0件になります。あらかじめGmailで該当ラベルを作成し、メールに手動またはフィルタで付与しておく必要があります。
ADVERTISEMENT
手動アーカイブとApps Script自動化の比較
| 項目 | 手動 | Apps Script自動化 |
|---|---|---|
| 作業時間 | 1メールあたり10秒程度 | 0秒(自動実行) |
| ドキュメント作成 | 手動でコピペ | 自動生成、整形も可能 |
| アーカイブ忘れ | 発生しやすい | 完全に自動化 |
| 初期設定 | 不要 | 30分程度のコーディング |
| カスタマイズ性 | 低い | 高い(条件や出力形式を自由に変更) |
まとめ
この記事では、Apps Scriptを使ってGmailの受信メールを自動的にGoogleドキュメントに変換し、メールをアーカイブする方法を解説しました。GmailApp.search()によるメール取得、DocumentApp.create()によるドキュメント作成、トリガーによる定期実行の3ステップで完全自動化が可能です。応用として、メールの内容を解析して特定の情報だけを抽出したり、スプレッドシートに一覧として保存することもできます。まずは簡単なスクリプトから試してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】罫線を縦・横に挿入する方法!Wordの罫線機能との比較
- 【Googleドキュメント】共有後に閲覧履歴を確認!誰がいつ開いたかの追跡
- 【Googleドキュメント】共有先の名前が表示されない時の対処!匿名動物アイコンの正体
