ADVERTISEMENT

【Googleスプレッドシート】定期エクスポートをGmail添付で自動送信!Apps Script活用

【Googleスプレッドシート】定期エクスポートをGmail添付で自動送信!Apps Script活用
🛡️ 超解決

毎日や毎週、スプレッドシートの特定の範囲をエクスポートして、関係者にメールで送信する作業を手動で行っている方は多いのではないでしょうか。この作業は単純ながらも時間がかかり、うっかり送り忘れるリスクもあります。この記事では、Apps Scriptを使ってスプレッドシートを定期的にPDFにエクスポートし、Gmailで自動送信する方法を解説します。コードの書き方からトリガー設定まで、ステップごとにわかりやすく説明しますので、プログラミングが初めての方でも安心してお試しいただけます。

【要点】スプレッドシートの定期エクスポートとメール自動送信をApps Scriptで実現

  • Apps ScriptでPDFエクスポート: シートの特定範囲をPDF形式で生成し、Blobデータとして取得できます。
  • GmailAppで添付送信: 生成したPDFをメールに添付し、任意の宛先へ送信するコードを記述します。
  • トリガーで定期実行: 時間主導型トリガーを設定することで、毎日・毎週など決まったタイミングで自動実行されます。

ADVERTISEMENT

Apps Scriptで定期エクスポートを行う仕組み

Googleスプレッドシートには標準の定期エクスポート機能はありませんが、Apps Scriptを使うことで柔軟に自動化できます。Apps ScriptはGoogleのクラウド上で動作するJavaScriptベースのスクリプト環境です。シートの内容を読み取り、PDFやExcelなどの形式に変換し、Gmailで送信する一連の処理をコードで記述します。この処理を時間主導型トリガーに登録すれば、指定した日時に自動的に実行されます。スクリプトはGoogleドライブ上に保存され、インターネット接続があればどこからでも動作します。

定期エクスポートと自動送信を実装する手順

1. スクリプトエディタを開く

  1. スプレッドシートを開く
    自動化したいスプレッドシートをGoogleドライブから開きます。
  2. 「拡張機能」メニューをクリック
    メニューバーから「拡張機能」を選び、「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。

2. エクスポートと送信のコードを記述する

  1. デフォルトコードを削除する
    エディタに表示されている「myFunction()」の内容をすべて削除します。
  2. 以下のコードを貼り付ける
    次のコードをそのままコピーしてエディタに貼り付けます。
    function sendSheetAsPDF() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet();
    var targetSheet = sheet.getSheetByName('シート1'); // エクスポートするシート名
    var range = targetSheet.getRange('A1:F20'); // エクスポート範囲
    var url = 'https://docs.google.com/spreadsheets/d/' + sheet.getId() + '/export?';
    var params = 'exportFormat=pdf&format=pdf' +
    '&gid=' + targetSheet.getSheetId() +
    '&range=' + range.getA1Notation() +
    '&size=letter&portrait=true&fitw=true&gridlines=false';
    var token = ScriptApp.getOAuthToken();
    var response = UrlFetchApp.fetch(url + params, {
    headers: { 'Authorization': 'Bearer ' + token }
    });
    var blob = response.getBlob().setName(sheet.getName() + '.pdf');
    var recipient = 'example@gmail.com'; // 送信先メールアドレス
    var subject = '定期レポート: ' + sheet.getName();
    var body = 'こちらは自動生成されたレポートです。';
    GmailApp.sendEmail(recipient, subject, body, {
    attachments: [blob]
    });
    }
  3. シート名・範囲・送信先を編集する
    コード内の「’シート1’」を実際のシート名に、「’A1:F20’」をエクスポートしたい範囲に、「’example@gmail.com’」を送信先アドレスに変更します。

3. 関数をテスト実行する

  1. 関数を選択して実行
    エディタ上部の関数ドロップダウンから「sendSheetAsPDF」を選び、再生ボタン▶をクリックします。初回は権限承認画面が表示されますので、「許可」をクリックしてください。
  2. メールを確認する
    指定したアドレスにPDFが添付されたメールが届くことを確認します。エラーがある場合はログを確認して修正します。

4. 定期実行トリガーを設定する

  1. トリガー画面を開く
    スクリプトエディタの左側メニューから時計アイコン(トリガー)をクリックします。
  2. トリガーを追加する
    右下の「トリガーを追加」をクリックし、次のように設定します。
    ・実行する関数: sendSheetAsPDF
    ・実行するデプロイ: ヘッド
    ・イベントのソース: 時間主導型
    ・時間ベースのトリガーのタイプ: 日付ベースのタイマー(または時間単位のタイマー)
    ・時間の間隔: 毎日正午、または1時間ごとなど希望の間隔を選びます。
  3. 保存する
    「保存」をクリックします。これで設定したスケジュールで自動実行されるようになります。

自動化の注意点とよくあるトラブル

権限承認が必要な場合がある

スクリプトを初めて実行するとき、またはトリガーを設定した後で、権限承認を求められます。これはスプレッドシートの読み取りやメール送信の許可を得るためです。承認は一度行えばその後は自動的に適用されますが、まれに期限切れになることがあります。その場合は再承認が必要です。

添付ファイルのサイズ制限に注意する

Gmailで送信できる添付ファイルは25MBまでです。エクスポートする範囲が広すぎる場合、PDFファイルがこの制限を超える可能性があります。その場合、スクリプトがエラーになります。範囲を狭めるか、画像を減らすなどしてファイルサイズを抑えましょう。

スクリプトの実行制限(Quota)を把握する

Apps Scriptには1日あたりの実行回数やメール送信件数に制限があります。Google Workspaceアカウントと無料アカウントで制限が異なります。大量の送信が必要な場合は、制限を確認して適切な間隔でトリガーを設定してください。

シート名や範囲を変更した場合の対応

コード内でシート名や範囲を直接指定していると、シートを変更した際にスクリプトが動かなくなります。将来の変更に備えて、シート名を変数で持つか、範囲を名前付き範囲にしておくと便利です。必要に応じてコードを修正してください。

ADVERTISEMENT

手動エクスポートと自動化の比較

項目 手動エクスポート+メール送信 Apps Script自動化
作業時間 毎回数分かかる 一度設定すればゼロ
ヒューマンエラー 送り忘れや誤送信のリスクあり 正確に実行される
カスタマイズ性 日々変更可能だが手間 コード修正で柔軟に対応
セキュリティ メール誤送信のリスク 承認済みのスクリプトのみ

まとめ

この記事では、Googleスプレッドシートから定期的に範囲をPDFエクスポートし、Gmailで自動送信する方法を解説しました。Apps Scriptを使えば、複雑な手作業を完全に自動化でき、毎日のルーティン業務から解放されます。コードの基本はシート名と範囲、送信先を指定するだけですので、ぜひご自身のシートに合わせてカスタマイズしてみてください。さらに発展させたい場合は、件名や本文に日付を動的に含めたり、複数のシートを一括送信するなど、応用の幅は広がります。トリガーの間隔を調整することで、必要なタイミングで正確に情報を共有できるようになります。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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