GASでスプレッドシートをPDF化してメール送信するステップガイド

スプレッドシートをPDF化してメール送信する方法、全然わからなくて困ってます。どうしたらいいんでしょう?
猫男
猫男
catman
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メソッドを呼び出す。