スプレッドシートを毎月PDFにしてGmailに添付して送るのが面倒
PDF添付のGmail下書きは、スプレッドシートのApps Scriptで毎月決まった日に自動で作れます。
送信ボタンだけは、宛先と添付を確かめてから自分で押します。
- 拡張機能 → Apps Script にコードを貼る
- 試しに動かして許可する
- 毎月1日の予約を1つだけ入れる
- 毎月、Gmailの下書きを確かめる
- 中身を確認して送信すれば完了
※2026年10月時点のGoogle公式ドキュメントに基づいています。ドライブへの保存は別記事で扱っています。

自動送信ではなく下書きにする理由
- 数字の入力が終わる前でもそのまま届く
- 相手に届いた後は取り戻せない
- 届く前に添付PDFを開いて確かめられる
- 件名や一言の手直しもできる
Gmailの送信取り消しが効くのは送信直後、長くても30秒です。
出典: メールの送信または送信取り消し
1Apps Scriptにコードを貼る
- 送りたいスプレッドシートを開く
- 「拡張機能」 → 「Apps Script」を選ぶ
- エディタの中身を下のコードに置き換える
- 1・2行目を書き換えて保存する
const TO = '[email protected]'; // ← 送り先アドレス
const BODY = 'お世話になっております。\n今月分の資料です。'; // ← 本文(改行は \n)
function makePdfDraft() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const month = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM');
const pdf = ss.getAs('application/pdf').setName(ss.getName() + '_' + month + '.pdf');
GmailApp.createDraft(TO, ss.getName() + '(' + month + ')', BODY, { attachments: Array.of(pdf) });
}
function setMonthlyTrigger() {
ScriptApp.newTrigger('makePdfDraft').timeBased().onMonthDay(1).create();
}
件名の年月は作った日のものなので、前月分なら下書きで直します。
出典: Class GmailApp / Class Spreadsheet
2試しに動かして許可する
エディタのプルダウンで makePdfDraft を選び「実行」を押します。初回はGmail全体を扱う権限などを求められます。「このアプリは確認されていません」と出たら「詳細」→「(プロジェクト名)に移動(安全ではありません)」で進みます。自分で貼ったスクリプト以外は許可しないでください。Google Workspace アカウントでは管理者の承認が要る場合があります。許可後、Gmailの「下書き」にできたか見ます。
出典: Google サービスの承認 / Gmail と Google スプレッドシートでメールへの差し込みを作成する
3毎月1日の予約を入れる
同じプルダウンで setMonthlyTrigger を1回だけ実行すると、毎月1日に動くトリガーができます。実行するたびに増えて下書きも重複するので、左の「トリガー」で1件か確かめます。余分なものは script.google.com の「マイ トリガー」で、その他アイコン→「トリガーを削除」で消せます。
出典: Class ClockTriggerBuilder / インストール可能なトリガー
4毎月、下書きを確かめて送る
Gmailの「下書き」を開き、宛先・件名・添付PDFを確かめて送信します。添付は作った時点の内容なので、数字を直したら古い下書きを消し、makePdfDraft を手で実行し直します。