DocumentApp.openByUrlで始める!GASによるドキュメント自動メール送信の効率化

DocumentApp.openByUrlで始める!GASによるドキュメント自動メール送信の効率化

この記事では、Google Apps Script(GAS)のDocumentApp.openByUrl関数を利用して、Googleドキュメントを自動でメール送信する方法を解説します。特に、定期的なレポート送信や、特定の条件を満たしたドキュメントの自動配信など、業務効率化に繋がる具体的な実装例を紹介します。GASを活用することで、手作業で行っていたドキュメント関連の業務を大幅に削減し、より創造的な仕事に時間を割くことができるようになります。

DocumentApp.openByUrlとは?

DocumentApp.openByUrlは、指定されたURLからGoogleドキュメントを開くためのGASの関数です。この関数を使うことで、スクリプトから特定のドキュメントにアクセスし、内容を読み込んだり、編集したりすることができます。URLは、Googleドキュメントの共有設定で「リンクを知っている全員」が閲覧できるように設定されている必要があります。

DocumentApp.openByUrlの基本的な使い方

基本的な使い方は以下の通りです。

function openDocumentByUrl(url) {
try {
const doc = DocumentApp.openByUrl(url);
Logger.log('ドキュメントを開きました: ' + doc.getName());
return doc;
} catch (e) {
Logger.log('ドキュメントを開けませんでした: ' + e);
return null;
}
}

上記のコードでは、openDocumentByUrl関数にドキュメントのURLを渡すと、そのドキュメントを開き、ドキュメントオブジェクトを返します。エラーが発生した場合は、エラーメッセージをログに出力します。

メール自動送信の実装方法

ここでは、DocumentApp.openByUrlを使って開いたドキュメントをPDF形式でメール送信する例を紹介します。

実装例1:ドキュメントをPDFとしてメール送信する

以下のコードは、指定されたURLのドキュメントをPDF形式に変換し、指定されたメールアドレスに送信します。

function sendDocumentAsPDF(docUrl, recipientEmail, subject, body) {
try {
// ドキュメントを開く
const doc = DocumentApp.openByUrl(docUrl);

// ドキュメントをPDFとしてBlobに変換
const pdfBlob = doc.getAs('application/pdf').setName(doc.getName() + '.pdf');

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

Logger.log('メールを送信しました');
} catch (e) {
Logger.log('メール送信に失敗しました: ' + e);
}
}

この関数を使うには、ドキュメントのURL、受信者のメールアドレス、メールの件名、本文を引数として渡します。

実際の使用例:

function main() {
const docUrl = 'https://docs.google.com/document/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // ドキュメントのURL
const recipientEmail = 'example@example.com'; // 受信者のメールアドレス
const subject = '【自動送信】週次レポート'; // メールの件名
const body = '添付ファイルで週次レポートをお送りします。'; // メール本文

sendDocumentAsPDF(docUrl, recipientEmail, subject, body);
}

実装例2:特定の条件でドキュメントを送信する

例えば、ドキュメント内の特定のキーワードに基づいてメールを送信するかどうかを決定することができます。

function sendDocumentIfKeywordExists(docUrl, recipientEmail, subject, body, keyword) {
try {
// ドキュメントを開く
const doc = DocumentApp.openByUrl(docUrl);
const docText = doc.getBody().getText();

// キーワードが存在するか確認
if (docText.indexOf(keyword) !== -1) {
// ドキュメントをPDFとしてBlobに変換
const pdfBlob = doc.getAs('application/pdf').setName(doc.getName() + '.pdf');

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

Logger.log('キーワードが見つかったため、メールを送信しました');
} else {
Logger.log('キーワードが見つからなかったため、メールを送信しませんでした');
}
} catch (e) {
Logger.log('処理に失敗しました: ' + e);
}
}

この例では、sendDocumentIfKeywordExists関数は、ドキュメント内に指定されたキーワードが存在する場合にのみメールを送信します。

実際の使用例:

function main() {
const docUrl = 'https://docs.google.com/document/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // ドキュメントのURL
const recipientEmail = 'example@example.com'; // 受信者のメールアドレス
const subject = '【自動送信】重要:プロジェクト更新'; // メールの件名
const body = '添付ファイルでプロジェクトの更新情報をお送りします。'; // メール本文
const keyword = '緊急'; // 検索するキーワード

sendDocumentIfKeywordExists(docUrl, recipientEmail, subject, body, keyword);
}

よくある問題とトラブルシューティング

  • ドキュメントが開けない:URLが正しいか、ドキュメントの共有設定が「リンクを知っている全員」になっているかを確認してください。
  • メールが送信されない:Gmail APIが有効になっているか、送信者のメールアドレスが正しいかを確認してください。
  • PDF変換でエラーが発生する:ドキュメントの内容が複雑すぎる場合、PDF変換に失敗することがあります。ドキュメントを簡略化するか、別の形式での送信を検討してください。

カスタマイズ方法と応用例

  • 定期的な実行:GASのトリガーを設定することで、毎日、毎週、毎月など、定期的にスクリプトを実行することができます。
  • 複数のドキュメントを処理:複数のドキュメントURLを配列で管理し、ループ処理でそれぞれのドキュメントを処理することができます。
  • スプレッドシートとの連携:スプレッドシートにドキュメントURLやメールアドレスを記載し、GASで読み込んで処理することで、より柔軟な自動化が実現できます。

まとめ

DocumentApp.openByUrlとGASを組み合わせることで、Googleドキュメントの自動メール送信を効率的に行うことができます。この記事で紹介したコード例やトラブルシューティングを参考に、ぜひGASを活用して業務効率化を実現してください。

PR

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

CodeCampで理想の働き方を実現しよう