GAS Document.getBody()で実現!Googleドキュメント自動メール送信術
Googleドキュメントの自動メール送信は、業務効率化に大きく貢献します。特に、Document.getBody()メソッドを活用することで、ドキュメントの内容を簡単に取得し、メール本文に組み込むことが可能です。この記事では、Document.getBody()の基本から、メール送信の自動化、よくある問題とその解決策まで、具体的なコード例を交えながら解説します。
Document.getBody()とは?
Document.getBody()は、Google Apps Script(GAS)で使用できるメソッドの一つで、Googleドキュメントの本文全体を取得するために使用されます。取得した内容は、文字列として扱えるため、メール本文への挿入や、他のドキュメントへの転記など、様々な用途に活用できます。
Document.getBody()の基本的な使い方
Document.getBody()メソッドは、以下のように記述します。
function getDocumentBody() {
const doc = DocumentApp.getActiveDocument();
const body = doc.getBody();
const content = body.getText();
Logger.log(content);
}
このコードでは、アクティブなドキュメントの本文を取得し、ログに出力しています。
メール送信自動化の実装
Document.getBody()を使って、Googleドキュメントの内容をメールで自動送信する方法を解説します。ここでは、定期的なレポート送信や、特定の条件を満たしたドキュメントの内容を関係者に通知するケースを想定します。
定期レポートの自動送信
毎日、毎週、または毎月、特定のドキュメントの内容をメールで送信するスクリプトを作成します。
function sendReportByEmail() {
// ドキュメントIDを設定
const documentId = "YOUR_DOCUMENT_ID";
// ドキュメントを開く
const doc = DocumentApp.openById(documentId);
// 本文を取得
const body = doc.getBody().getText();
// メール送信先
const recipient = "your_email@example.com";
// 件名
const subject = "【日次レポート】" + Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd");
// メール本文
const emailBody = body;
// メール送信オプション
const options = {
htmlBody: emailBody, // HTML形式で送信
};
// メール送信
MailApp.sendEmail(recipient, subject, emailBody, options);
Logger.log("メールを送信しました");
}
// 毎日AM9:00に実行されるようにトリガーを設定
カスタマイズ:上記のコードでは、YOUR_DOCUMENT_IDとyour_email@example.comを実際の値に置き換えてください。また、Utilities.formatDateを使って、件名に日付を自動的に追加しています。トリガーを設定することで、毎日自動的にメールが送信されます。
特定の条件でメールを送信
ドキュメントの内容に特定のキーワードが含まれる場合に、メールを送信するスクリプトを作成します。
function sendEmailIfKeywordFound() {
// ドキュメントID
const documentId = "YOUR_DOCUMENT_ID";
// 検索キーワード
const keyword = "重要";
// 送信先メールアドレス
const recipient = "your_email@example.com";
// ドキュメントを開く
const doc = DocumentApp.openById(documentId);
// ドキュメントの本文を取得
const body = doc.getBody().getText();
// キーワードが含まれているか確認
if (body.indexOf(keyword) !== -1) {
// 件名
const subject = "【重要】キーワード「" + keyword + "」が含まれています";
// 本文
const emailBody = body;
// メール送信オプション
const options = {
htmlBody: emailBody, // HTML形式で送信
};
// メールを送信
MailApp.sendEmail(recipient, subject, emailBody, options);
Logger.log("キーワードが含まれていたため、メールを送信しました");
} else {
Logger.log("キーワードは含まれていませんでした");
}
}
カスタマイズ:YOUR_DOCUMENT_ID、your_email@example.com、重要を実際の値に置き換えてください。このスクリプトは、ドキュメント内に指定したキーワードが含まれている場合にのみメールを送信します。
よくある問題とトラブルシューティング
文字化けが発生する場合
メールの文字コードが原因で文字化けが発生することがあります。メール送信オプションで文字コードを指定することで解決できます。
// メール送信オプション
const options = {
htmlBody: emailBody,
charset: "UTF-8" // 文字コードを指定
};
ドキュメントIDが間違っている
ドキュメントIDが間違っていると、ドキュメントを開くことができません。ドキュメントIDが正しいか確認してください。
権限の問題
スクリプトがドキュメントにアクセスする権限がない場合、エラーが発生します。スクリプトを実行するアカウントに、ドキュメントへのアクセス権があることを確認してください。
カスタマイズ方法と応用例
メール本文の整形
Document.getBody()で取得したテキストを、HTMLタグを使って整形することができます。例えば、段落ごとに<p>タグで囲んだり、強調したい部分を<strong>タグで囲んだりすることができます。
function formatEmailBody() {
const documentId = "YOUR_DOCUMENT_ID";
const doc = DocumentApp.openById(documentId);
const body = doc.getBody();
let content = body.getText();
// 改行コードで分割して段落を作る
const paragraphs = content.split("\n");
let htmlBody = "";
for (let i = 0; i < paragraphs.length; i++) {
htmlBody += "" + paragraphs[i] + "
";
}
// メール送信
MailApp.sendEmail("your_email@example.com", "整形されたメール", "", {htmlBody: htmlBody});
}
添付ファイルの送信
ドキュメントをPDFとして添付して送信することも可能です。
function sendDocumentAsPDF() {
const documentId = "YOUR_DOCUMENT_ID";
const doc = DocumentApp.openById(documentId);
const blob = doc.getAs("application/pdf");
MailApp.sendEmail({
to: "your_email@example.com",
subject: "ドキュメントをPDFとして添付",
body: "",
});
}
まとめ
Document.getBody()メソッドを活用することで、Googleドキュメントの内容を簡単に取得し、メール送信を自動化することができます。この記事で紹介したコード例を参考に、日々の業務を効率化してください。

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう