GASでデータをPDFに変換してメール送信する方法

先生

GASでPDF変換とメール送信を自動化して、日々のルーチンワークから解放されましょう!

GASでPDF変換とメール送信:自動化の基礎

Google Apps Script(GAS)を使って、データをPDFに変換し、メールで自動送信する方法を解説します。この処理を自動化することで、日々の業務効率を大幅に向上させることができます。例えば、スプレッドシートのデータを請求書としてPDF化し、顧客に自動送信する、といった活用が可能です。

この記事では、GASの基本的な使い方から、PDF変換、メール送信までの手順をステップごとに解説します。初心者の方でも理解しやすいように、サンプルコードを交えながら丁寧に説明していきます。

まず、GASのプロジェクトを作成し、必要なAPIを有効にする方法から始めましょう。次に、スプレッドシートからデータを取得し、PDFに変換するコードを作成します。最後に、作成したPDFファイルをメールに添付して送信するコードを実装します。

GASプロジェクトの作成とAPIの有効化

GASプロジェクトを作成するには、まずGoogle Driveにアクセスし、「新規」→「その他」→「Google Apps Script」を選択します。これにより、新しいGASプロジェクトが開きます。

次に、PDF変換に必要なDrive APIと、メール送信に必要なGmail APIを有効にします。「リソース」→「Advanced Google services」を選択し、Drive APIとGmail APIをそれぞれ「ON」にします。APIを有効にすると、プロジェクトでこれらのAPIを使用できるようになります。

プロジェクト名を設定しておきましょう。「無題のプロジェクト」をクリックし、適切な名前を入力します。例えば、「PDFメール自動送信」といった名前が良いでしょう。

スプレッドシートからのデータ取得とPDF変換

スプレッドシートからデータを取得し、PDFに変換するコードを以下に示します。

function generatePdfAndSendEmail() {
  // スプレッドシートのIDとシート名
  const spreadsheetId = 'YOUR_SPREADSHEET_ID';
  const sheetName = 'Sheet1';

  // スプレッドシートを取得
  const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  const sheet = spreadsheet.getSheetByName(sheetName);

  // データを取得
  const dataRange = sheet.getDataRange();
  const values = dataRange.getValues();

  // PDFとして保存する内容をHTML形式で作成
  let htmlBody = '<html><body><h1>データ</h1><table border="1">';
  for (let i = 0; i < values.length; i++) {
    htmlBody += '<tr>';
    for (let j = 0; j < values[i].length; j++) {
      htmlBody += '<td>' + values[i][j] + '</td>';
    }
    htmlBody += '</tr>';
  }
  htmlBody += '</table></body></html>';

  // PDFに変換
  const pdf = DriveApp.create('temp.html', htmlBody, MimeType.HTML).getAs('application/pdf').getBytes();

  //一時ファイルを削除
  const file = DriveApp.getFileById(DriveApp.getRootFolder().getId());
  DriveApp.getFileById(file.getId()).setTrashed(true);

  // メール送信処理は次のセクションで実装
}

上記のコードでは、YOUR_SPREADSHEET_IDを実際のスプレッドシートIDに置き換える必要があります。また、Sheet1はシート名に合わせて変更してください。このコードはスプレッドシートの全データをHTMLテーブルとしてPDFに変換します。

DriveApp.createで一時ファイルを作成し、getAs(‘application/pdf’)でpdfに変換しています。PDFに変換後、一時ファイルは削除されます。

PDFファイルのメール送信

作成したPDFファイルをメールで送信するコードを以下に示します。前のセクションのコードに続けて記述します。

  // メール送信先
  const recipient = 'your_email@example.com';
  const subject = 'PDFデータ';
  const body = 'PDFファイルを添付します。';
  const attachment = {
    fileName: 'data.pdf',
    content: pdf,
    mimeType: 'application/pdf'
  };

  // メールを送信
  GmailApp.sendEmail(recipient, subject, body, {
    attachments: [attachment]
  });

  Logger.log('メールを送信しました。');
}

上記のコードでは、your_email@example.comを実際の送信先に置き換えてください。また、件名や本文も必要に応じて変更できます。

GmailApp.sendEmailを使用してメールを送信しています。attachmentsオプションに、PDFファイルの情報を指定することで、PDFファイルを添付ファイルとして送信できます。

最後に、generatePdfAndSendEmail()関数全体を実行することで、スプレッドシートのデータをPDFに変換し、メールで送信する処理が完了します。

参考リンク

まとめ

GASを使って、スプレッドシートのデータをPDFに変換し、メールで自動送信する方法を解説しました。この自動化によって、業務効率を大幅に向上させることができます。ぜひ、この記事を参考に、GASを活用してみてください。

さらに応用することで、特定の条件を満たすデータのみをPDF化して送信したり、定期的に自動実行するトリガーを設定したりすることも可能です。GASの可能性は無限大です。