GASでスプレッドシートをPDF化してメール送信するステップガイド
スプレッドシートをPDF化してメール送信する方法、全然わからなくて困ってます。どうしたらいいんでしょう?

猫男

catman
GASを使うと、スプレッドシートをPDF化してメールで送信できる。catmanがステップごとに教えてやるさ。
GASでスプレッドシートをPDF化する準備
まずは、スプレッドシートとGASプロジェクトを用意しよう。
Googleスプレッドシートを設定する
スプレッドシートを用意し、PDF化したいシートを選択しよう。これがGASで操作するスプレッドシートだ。
GASプロジェクトを作成する
GASプロジェクトはスプレッドシートの「拡張」メニューから「スクリプトエディタ」を選んで作成しよう。ここにコードを書いていく。
スプレッドシートをPDFに変換するGASの書き方
次に、GASでスプレッドシートをPDF化するスクリプトを書く方法を紹介しよう。
PDF変換用のスクリプト
以下はスプレッドシートをPDFに変換する基本的なスクリプトだ。
function convertSheetToPDF() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getActiveSheet();
const url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet.getId() + '/export?';
const exportOptions = {
format: 'pdf',
size: 'A4',
portrait: true,
sheetnames: false,
printtitle: false,
pagenumbers: false,
gridlines: false,
fzr: false
};
const params = [];
for (const key in exportOptions) {
params.push(key + '=' + exportOptions[key]);
}
const token = ScriptApp.getOAuthToken();
const response = UrlFetchApp.fetch(url + params.join('&'), {
headers: {
'Authorization': 'Bearer ' + token
}
});
return response.getBlob();
}
Google スプレッドシートのアクティブなシートを PDF に変換し、その PDF データを Blob(バイナリ形式)で取得するスクリプトだ。
SpreadsheetAppを使ってアクティブスプレッドシートを取得し、UrlFetchAppでPDFとしてエクスポートするURLを作成している。
スプレッドシートのIDを基に、PDFエクスポートのオプションを設定し、URLにパラメータとして追加。
最後に、getBlobメソッドでPDFデータを取得する。
PDFをメールで送信する方法
PDFを取得したら、それをメールで送信する方法を見ていこう。
メール送信用のスクリプト
次のスクリプトでPDFをメールで送信する。
function emailPDF() {
const pdf = convertSheetToPDF();
const email = 'recipient@example.com'; // 宛先メールアドレス
const subject = 'スプレッドシート PDF';
const body = 'ご確認ください。';
MailApp.sendEmail({
to: email,
subject: subject,
htmlBody: body,
attachments: [pdf]
});
}
MailAppを使ってsendEmailメソッドを実行する。
PDFデータをattachmentsプロパティに追加して、メールを送信する。
なるほど、これでスプレッドシートをPDF化して簡単に送信できるようになったんですね!勉強になります!

猫男
練習問題
・GASを使ってスプレッドシートをPDF化するスクリプトを書いてみよう。
・PDFをメールで送信するスクリプトを修正し、複数の受信者に送信可能にしよう。
解答と解説
function emailPDFToMultiple() {
const pdf = convertSheetToPDF();
const emails = ['recipient1@example.com', 'recipient2@example.com'];
const subject = 'スプレッドシート PDF';
const body = '下記PDFをご確認ください。';
emails.forEach(email => {
MailApp.sendEmail({
to: email,
subject: subject,
htmlBody: body,
attachments: [pdf]
});
});
}
forEachメソッドを使って、複数の受信者にメールを送信する。
配列の各要素に対して、sendEmailメソッドを呼び出す。