GASで添付ファイルをGoogle Driveに保存する方法

先生

GASでGmailの添付ファイルを自動でGoogle Driveに保存する方法をマスターして、メール整理を効率化しましょう!

GASで添付ファイルをGoogle Driveに保存する基本

Google Apps Script(GAS)を使って、Gmailの添付ファイルをGoogle Driveに自動保存する方法を解説します。これは、メールの整理やバックアップに非常に役立ちます。GASの基本的な設定から、具体的なコードまでをステップバイステップで説明します。

まず、GASプロジェクトを作成します。Google Driveを開き、「新規」→「その他」→「Google Apps Script」を選択します。これで、新しいGASプロジェクトが開きます。

次に、スクリプトエディタに必要なコードを記述していきます。Gmailから添付ファイルを取得し、それをGoogle Driveに保存する処理を実装します。

function saveAttachmentsToDrive() {
  // Gmailから添付ファイルを取得
  var threads = GmailApp.search('has:attachment');
  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 attachments = message.getAttachments();

      // 添付ファイルをGoogle Driveに保存
      for (var k = 0; k < attachments.length; k++) {
        var attachment = attachments[k];
        var fileName = attachment.getName();
        var fileBlob = attachment.getDataAsString();
        var file = DriveApp.createFile(fileName, fileBlob, attachment.getContentType());

        Logger.log('File saved: ' + fileName);
      }
    }
  }
}

コードの解説とカスタマイズ

上記のコードは、Gmailの未読スレッドから添付ファイルを取得し、Google Driveのルートフォルダに保存するものです。各行のコードについて詳しく解説します。

GmailApp.search('has:attachment')は、添付ファイルを持つGmailのスレッドを検索します。検索条件は必要に応じて変更できます。例えば、特定の送信者からのメールに限定することも可能です。

thread.getMessages()でスレッド内のメッセージを取得し、message.getAttachments()で各メッセージの添付ファイルを取得します。

DriveApp.createFile(fileName, fileBlob, contentType)で、添付ファイルをGoogle Driveに保存します。fileNameはファイル名、fileBlobはファイルの内容、contentTypeはファイルのMIMEタイプです。

保存先のフォルダを指定する場合は、DriveApp.getRootFolder()DriveApp.getFolderById('フォルダID')に変更します。フォルダIDは、Google DriveのフォルダのURLから取得できます。

// 特定のフォルダに保存する場合
var folderId = 'YOUR_FOLDER_ID'; // フォルダIDを入力
var folder = DriveApp.getFolderById(folderId);
var file = folder.createFile(fileName, fileBlob, attachment.getContentType());

エラー処理を追加することも重要です。例えば、ファイルが既に存在する場合に上書きしないようにしたり、エラーが発生した場合にログを出力したりすることができます。

トリガーの設定と自動実行

GASのスクリプトを自動的に実行するために、トリガーを設定します。GASエディタの「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。

トリガーの設定画面で、実行する関数、実行するタイミング(時間主導型、スプレッドシートからの実行など)、エラー通知の設定などを選択します。

例えば、毎日午前9時にスクリプトを実行するように設定すると、毎朝自動的にGmailの添付ファイルがGoogle Driveに保存されます。

時間主導型トリガーは、分、時間、日、週、月単位で設定できます。必要に応じて、最適なタイミングを設定してください。

また、エラー通知を有効にすることで、スクリプトの実行中にエラーが発生した場合にメールで通知を受け取ることができます。

応用:特定の条件で保存する

特定の条件を満たす添付ファイルのみを保存することも可能です。例えば、特定の送信者からのメールの添付ファイルのみを保存したり、特定のファイル名を持つ添付ファイルのみを保存したりすることができます。

// 特定の送信者からの添付ファイルのみを保存する場合
var sender = 'example@example.com'; // 送信者のメールアドレスを入力
if (message.getFrom() == sender) {
  // 保存処理
}
// 特定のファイル名を持つ添付ファイルのみを保存する場合
var targetFileName = 'report.pdf'; // ファイル名を入力
if (fileName == targetFileName) {
  // 保存処理
}

これらの条件を組み合わせることで、より柔軟な自動化を実現できます。

参考リンク

まとめ

GASを使ってGmailの添付ファイルをGoogle Driveに自動保存する方法を解説しました。基本的なコードから、カスタマイズ、トリガーの設定、応用まで、幅広くカバーしました。この知識を活用して、日々の業務を効率化し、メール管理をよりスマートにしましょう。GASは非常に強力なツールであり、様々なタスクを自動化することができます。ぜひ、色々なスクリプトを試してみてください。