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/
メール送信関数の記述
スクリプトエディタのデフォルトファイル(コード.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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
SPONSORED
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】音声入力が認識されない時の対処!マイク権限の確認
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】表内の文字を縦中央揃えにする方法!セル内配置
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】PDFからDocsへ変換する方法!OCR取り込みと精度
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
