【Googleドキュメント】Apps ScriptでDocsをHTML化してメール送信!HTMLニュースレター配信

【Googleドキュメント】Apps ScriptでDocsをHTML化してメール送信!HTMLニュースレター配信
🛡️ 超解決

Googleドキュメントで作成した文書を、そのままメールで送信したいと思ったことはありませんか。手動でコピー・ペーストするとレイアウトが崩れてしまい、ニュースレターとして使いにくくなることがあります。実は、Apps Scriptを使えばGoogle Docsの内容を自動的にHTML形式に変換し、指定した宛先にメール送信することが可能です。この記事では、スクリプトの書き方から設定手順までをわかりやすく解説します。

【要点】Apps ScriptでDocsをHTML化してメール送信する方法

  • DocumentApp.getBody().getHtml() でHTML取得: ドキュメントの本文をリッチテキスト形式で取得し、元の書式をほぼ保持したHTMLを生成します。
  • MailApp.sendEmail() で送信: 件名・宛先・HTML本文を指定してメールを送信する標準メソッドで、画像や表も埋め込めます。
  • スクリプトの権限承認: 初回実行時にメール送信とドキュメント読み取りの権限が必要です。承認すれば以降は自動で動作します。

ADVERTISEMENT

Apps ScriptでDocsをHTML化するメリット

Google Docsは表や画像、箇条書きなど豊富な書式設定に対応しています。これらの要素をそのままメールに転用したい場合、Apps Scriptを使うことで書式を保持したまま一括送信できます。手動でHTMLに変換する手間を省けるだけでなく、テンプレートの再利用や動的な内容の差し込みも可能です。Google Workspaceアカウントがあれば無料で利用できるのも大きな利点です。

スクリプト作成の準備と基本コード

まずは、Googleドキュメントを開き、スクリプトエディタを起動します。メニューの「拡張機能」→「Apps Script」をクリックすると、新しいタブでプロジェクトが開きます。ここにコードを記述していきます。

ドキュメントIDの取得方法

変換したいドキュメントのURLを確認してください。URLは「https://docs.google.com/document/d//edit」という形式になっており、の部分がドキュメントのIDです。このIDをスクリプト内で使用します。IDは公開されないように注意してください。

メール送信関数の記述

スクリプトエディタのデフォルトファイル(コード.gs)に、以下のサンプルコードを記述します。ID部分を実際のドキュメントIDに、送信先メールアドレスを適宜変更してください。

function sendDocAsEmail() {
  var docId = 'YOUR_DOCUMENT_ID';
  var doc = DocumentApp.openById(docId);
  var body = doc.getBody();
  var html = body.getHtml();
  var subject = 'ニュースレター: ' + doc.getName();
  MailApp.sendEmail({
    to: 'recipient@example.com',
    subject: subject,
    htmlBody: html
  });
}

スクリプトの実行と承認

コードを記述したら、エディタ上部の実行ボタン(▶)をクリックします。初回実行時には権限の承認画面が表示されます。内容を確認し、「許可」をクリックしてください。承認が完了すると、指定した宛先にメールが送信されます。エラーが発生した場合は、画面下部のログを確認して原因を特定します。

応用例:複数宛先への一斉送信

ニュースレターでは複数の購読者に同じ内容を送ることが多いです。スプレッドシートにメールアドレスを管理しておき、スクリプトで読み込んでループ送信する方法を紹介します。

スプレッドシートから宛先を取得する

別のGoogleスプレッドシートを作成し、A列にメールアドレスを並べておきます。スクリプトでSpreadsheetAppを使ってデータを取得し、各アドレスにメールを送信します。送信間隔を設けるためにUtilities.sleep()を挟むと、制限を回避しやすくなります。

function sendBulkEmail() {
  var sheet = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID').getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var doc = DocumentApp.openById('YOUR_DOCUMENT_ID');
  var html = doc.getBody().getHtml();
  for (var i = 0; i < data.length; i++) {
    var email = data[i][0];
    if (email) {
      MailApp.sendEmail({
        to: email,
        subject: 'ニュースレター',
        htmlBody: html
      });
      Utilities.sleep(1000); // 1秒待機
    }
  }
}

この方法を使えば、数百件の宛先にも自動でニュースレターを配信できます。ただし、1日あたりの送信上限に注意してください。

ADVERTISEMENT

注意点とトラブルシューティング

実際に運用する際に陥りやすい問題とその対処方法をまとめます。

HTML変換で崩れる書式がある

getHtml()で取得したHTMLは、元のドキュメントの書式を完全に再現できません。特に、複雑な表組みや画像の配置、特定のフォント設定が崩れることがあります。対策として、メールクライアント(Gmail等)での表示を事前に確認しましょう。また、書式をシンプルに保つことで再現性が高まります。

画像が表示されない場合の対処

ドキュメント内の画像は、getHtml()で取得するとBase64形式で埋め込まれますが、ファイルサイズによってはメールの上限を超えることがあります。特に大きな画像は、別途画像ホスティングサービスを利用してURLを差し込む方法をおすすめします。スクリプト内で画像をアップロードしてURLを取得する処理を追加することも可能です。

送信エラーと制限事項

MailApp.sendEmail()には1日あたりの送信上限(無料アカウントで100通、Google Workspaceでは1500通)があります。大量送信が必要な場合は、GmailApp(Gmail API)を使って上限を引き上げることも検討してください。また、スクリプトの実行時間には制限(6分)があるため、ループ処理は効率的に記述します。

手動コピーとスクリプトの比較

手動でドキュメントをHTML化する方法と、Apps Scriptを使う方法の違いを表で整理します。

項目 手動コピー Apps Script
作業時間 1通あたり5〜10分 初期設定後は自動で数秒
書式の再現性 手動調整が必要で低い 高いが完全ではない
一括送信 手動で都度コピーが必要 スプレッドシートと連携で可能
エラーリスク 人為的ミスが発生しやすい スクリプトのバグ対策が必要

まとめ

この記事では、Apps Scriptを使ってGoogleドキュメントをHTML化し、メールで送信する方法を解説しました。基本のgetHtml()とMailApp.sendEmail()の組み合わせで、ニュースレター配信を自動化できます。さらに、スプレッドシートを活用すれば複数宛先への一斉送信も簡単です。まずは1つのドキュメントで動作を確認し、その後応用機能を追加してみてください。スクリプトのバックアップやエラー処理を実装することで、より実用的なシステムになります。

ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

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

SPONSORED