【GAS】Gmailの添付ファイル名を取得する方法

GASgetAttachments,getName,GmailApp

Google Apps Script(GAS)を使えば、Gmailの添付ファイル名を自動で取得し、リスト化したり、条件に応じて処理を実行することが可能です。この機能は、添付ファイルの管理や、特定のファイルを操作する際に役立ちます。この記事では、添付ファイル名を取得する具体的な方法を解説します。

Gmailの添付ファイル名を取得する方法

GASでは、GmailAppクラスのgetAttachmentsメソッドを使用してメールに添付されたファイルを取得し、その名前を取得できます。

基本構文

function getAttachmentNames() {
  // 件名に「レポート」を含むメールを検索
  const threads = GmailApp.search("subject:レポート");

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

    messages.forEach(message => {
      const attachments = message.getAttachments();

      attachments.forEach(attachment => {
        const fileName = attachment.getName(); // ファイル名を取得
        Logger.log("添付ファイル名: " + fileName);
      });
    });
  });
}

実行結果

添付ファイル名: report_2025.pdf
添付ファイル名: summary.xlsx
添付ファイル名: data_chart.png

具体例2: 添付ファイル名をスプレッドシートに記録

以下のスクリプトは、取得した添付ファイル名をスプレッドシートに記録する例です。

function saveAttachmentNamesToSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const threads = GmailApp.search("has:attachment"); // 添付ファイルありのメールを検索
  let row = 1; // スプレッドシートの開始行

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

    messages.forEach(message => {
      const attachments = message.getAttachments();

      attachments.forEach(attachment => {
        const fileName = attachment.getName();
        sheet.getRange(row, 1).setValue(fileName); // ファイル名を記録
        row++;
      });
    });
  });
}

スプレッドシート例

添付ファイル名
report_2025.pdf
summary.xlsx
data_chart.png

具体例3: 特定のファイル名に一致する添付ファイルを抽出

以下は、特定のファイル名(例: report_2025.pdf)に一致する添付ファイルを抽出する例です。

function filterAttachmentByName() {
  const threads = GmailApp.search("has:attachment");

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

    messages.forEach(message => {
      const attachments = message.getAttachments();

      attachments.forEach(attachment => {
        if (attachment.getName() === "report_2025.pdf") {
          Logger.log("一致する添付ファイル: " + attachment.getName());
        }
      });
    });
  });
}

注意点

Gmail APIの制限
GASを使用したGmail操作には、1日あたりのリクエスト数制限があります。無料アカウントの場合は100件/日が上限です。

添付ファイルがないメールの処理
getAttachmentsメソッドは空の配列を返す場合があるため、必ず配列の長さを確認してください。

ファイル名の重複
異なるメールの添付ファイルでも同じ名前が付けられている場合があります。重複処理を考慮して運用する必要があります。

まとめ

この記事では、GASを使ったGmailの添付ファイル名の取得方法を解説しました。

  • GmailAppのgetAttachmentsメソッドを使用して添付ファイルを取得
  • ファイル名をログに出力またはスプレッドシートに記録
  • 特定の条件に一致する添付ファイルを抽出
    これらの方法を活用し、効率的な添付ファイル管理を実現してください。