ADVERTISEMENT

【Googleスプレッドシート】メール添付の自動エクスポート!定期的なPDF送信の自動化

【Googleスプレッドシート】メール添付の自動エクスポート!定期的なPDF送信の自動化
🛡️ 超解決

毎日手作業でスプレッドシートをPDFにエクスポートし、メールに添付して送信する作業に疲れていませんか。この記事では、GoogleスプレッドシートのApps Scriptを使って、PDFを自動生成し指定のメールアドレスに定期的に送信する方法を解説します。スクリプトを一度設定すれば、毎日のルーティン作業から解放されます。

【要点】Apps ScriptでPDFメール送信を完全自動化

  • スクリプトの記述: スプレッドシートをPDFに変換し、GmailAppで送信するコードを作成します。
  • トリガーの設定: 時間主導型トリガーで毎日・毎週などの定期実行をスケジュールします。
  • 権限の承認: 初回実行時に必要なアクセス許可を与えます。これにより自動送信が可能になります。
  • エラー対策: 送信先アドレスやファイル名の指定をしっかり確認することで、トラブルを防ぎます。

ADVERTISEMENT

自動メール送信の仕組みと事前準備

Googleスプレッドシートには、シートの内容をPDFファイルとしてエクスポートする機能が組み込まれています。これをApps Scriptから呼び出し、さらにメール送信までを自動化するのが今回の目的です。事前に必要なものは、Googleアカウントと送信先のメールアドレスだけです。スクリプトはブラウザ上で編集でき、特別なソフトウェアは不要です。

自動化の流れは次のとおりです。まず、スプレッドシートの特定のシートをPDF形式で取得します。次に、そのPDFファイルをGmailの添付ファイルとして作成します。最後に、GmailApp.sendEmailメソッドで指定の宛先に送信します。この一連の処理を時間主導型トリガーで定期的に起動させることで、完全自動化が実現します。

Apps ScriptでPDFメール送信を設定する手順

ここからは実際にスクリプトを書いて動作させる手順を説明します。順番に操作すれば、初心者の方でも設定できます。

  1. Apps Scriptエディタを開く
    スプレッドシートを開き、メニューの「拡張機能」→「Apps Script」をクリックします。新しいタブにスクリプトエディタが開きます。
  2. スクリプトを記述する
    エディタに以下のコードをコピー&ペーストします。このコードは、アクティブなシートをPDFに変換し、指定のメールアドレスに送信します。
    function sendPdf() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet();
      var sheetId = sheet.getSheetId();
      var url = sheet.getUrl().replace(/edit$/, '') + 'export?exportFormat=pdf&gid=' + sheetId;
      var token = ScriptApp.getOAuthToken();
      var response = UrlFetchApp.fetch(url, {
        headers: { 'Authorization': 'Bearer ' + token }
      });
      var blob = response.getBlob().setName('report.pdf');
      GmailApp.sendEmail('recipient@example.com', 'PDF Report', 'Please find attached the report.', {
        attachments: [blob]
      });
    }

    「recipient@example.com」を実際の送信先メールアドレスに変更します。件名や本文も必要に応じて編集してください。

  3. プロジェクトを保存する
    エディタの上部にあるフロッピーディスクアイコン(保存)をクリックします。プロジェクト名は任意の名前で構いません。
  4. トリガーを設定する
    エディタ左側の「トリガー」アイコン(時計マーク)をクリックし、「トリガーを追加」を選択します。実行する関数は「sendPdf」、イベントのソースは「時間主導型」、時間の間隔は「日タイマー」または「週タイマー」など好みの頻度を選びます。例えば毎朝9時に送信したい場合は、「時間の間隔」で「日」を選び、「時間帯」を「午前9時〜10時」に設定します。
  5. 権限を承認する
    初めてトリガーを保存すると、必要な権限の確認画面が表示されます。画面の指示に従い、自分のGoogleアカウントを選択し、「許可」をクリックします。これでスクリプトがスプレッドシートとGmailにアクセスできるようになります。
  6. 動作をテストする
    エディタ上部の実行ボタン(▶)を押して、関数が正しく動作するか確認します。エラーがなければ、指定したメールアドレスにPDFが添付されたメールが届きます。初回は「承認が必要」と表示されることがありますので、その場合はもう一度権限を承認してください。

以上の手順で、定期的なPDFメール送信の自動化が完了します。トリガーが設定されていれば、指定した時刻に自動で実行されます。

よくあるトラブルと対処法

自動化を運用していく中で、いくつかのエラーや問題に遭遇する可能性があります。ここでは代表的なトラブルとその解決方法を解説します。

権限エラーが発生する場合

スクリプト実行時に「Exception: 権限がありません」というエラーが出ることがあります。これは、必要なスコープが付与されていないことが原因です。再度トリガー設定画面からスクリプトを実行し、画面の指示に従って権限を再承認してください。また、Gmailの送信制限(1日あたり2000通まで)に達していないかも確認しましょう。

メールが届かない場合

送信先アドレスが正しいか、迷惑メールフォルダに入っていないか確認します。また、GmailApp.sendEmailの第一引数に複数のアドレスを指定する場合は、カンマ区切りで記述します。件名や本文に特殊文字が含まれていると文字化けすることがあるので、日本語を使用する際はUTF-8で問題ありませんが、テストとして簡単な英語で試してみると良いでしょう。

添付ファイルのサイズが大きすぎる場合

Gmailの添付ファイルの最大サイズは25MBです。スプレッドシートが非常に大きなデータを含む場合、PDFファイルが上限を超える可能性があります。その場合は、送信するシートを限定したり、画像を圧縮するなどしてファイルサイズを小さくします。また、SpreadsheetApp.getActiveSpreadsheet()ではなく、特定のシートのみを取得するようにコードを変更することも有効です。

トリガーが正しく動作しない場合

トリガーが設定されていても、アカウントのログイン状態が不安定だったり、ブラウザのキャッシュが原因で動作しないことがあります。一度ブラウザをリロードし、Apps Scriptエディタで「現在のトリガー」を確認してください。トリガー一覧に自分のトリガーが表示されていない場合は、再度追加します。また、Googleアカウントの2段階認証を有効にしている場合は、アプリパスワードが必要になることはありませんが、設定によっては影響する場合もあります。

ADVERTISEMENT

手動操作と自動化の比較

項目 手動 自動化(Apps Script)
所要時間(1回あたり) 約2〜3分 0分(自動実行)
人為的ミス 添付忘れ・宛先ミスが発生しうる 一度設定すれば正確に送信
スケジュール変更 毎回手動で調整が必要 トリガー設定を変更するだけ
初期設定の手間 なし 約10分の初期セットアップが必要
拡張性 低い(毎回手動) 高い(複数シート・複数宛先などカスタマイズ可能)

まとめ

この記事では、GoogleスプレッドシートのApps Scriptを使って、PDFファイルを自動生成しメールで定期的に送信する方法を解説しました。わずか数行のコードとトリガー設定で、毎日のエクスポート作業から完全に解放されます。応用として、送信するシート名を可変にしたり、複数の宛先に一斉送信するようスクリプトを編集することも可能です。ぜひご自身の業務に合わせてカスタマイズし、作業効率を大幅に向上させてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。