Google関連

[Google Apps Script]Googleドキュメント文書をPDFに変換してメール送信する

先日Twitterで @TsujiKenzo さんが下記のようにツイートされていました。送信先のシステムがShift-JISでメールを受け取る仕様で、GASからのメール送信でお困りのようです。

下記のようにAdvanced Gmail Serviceを使用することで、MailAppクラスよりも細かな制御ができるのですが、私自身ヘッダーの指定やら文字化けやらで苦しんだ記憶があります。

//Advanced Gmail Service使用
function myFunction() {
  let contents = "To: (送信先メールアドレス)\n";
  contents += "Subject: =?iso-2022-jp?B?GyRCJUYlOSVIJWEhPCVrGyhC?=\n"; //テストメール
  contents += "Content-Type: text/plain; charset=iso-2022-jp\n";
  contents += "Content-Transfer-Encoding: 7bit\n\n";
  contents += '$B$"$$$&$($*(B'; //あいうえお
  
  const msg = Gmail.newMessage();
  msg.raw = Utilities.base64EncodeWebSafe(contents);
  Gmail.Users.Messages.send(msg, "me");
}

そこで今回は、代替案として文字化けする日本語の本文をPDFに変換し、メールに添付して送信するスクリプトをご紹介します。

function sendPDF() {
  const fileName = "SampleDocument";
  let body = "お世話になっております。\n";
  body += "弊社製品〇〇へのお問い合わせありがとうございました。\n\n";
  body += "3営業日以内に担当者よりご連絡いたしますので、今しばらくお待ちくださいませ。";

  //Docs文書を作成してPDF変換
  const doc = DocumentApp.create(fileName);
  doc.getBody().setText(body);
  doc.saveAndClose();
  const pdf = DriveApp.createFile(doc.getAs("application/pdf")).setName(fileName + ".pdf");

  //PDFを添付してメール送信
  MailApp.sendEmail(
    "(送信先メールアドレス)", //To
    "TEST MAIL", //Subject
    "Please refer to the attachment.", //Body
    {
      attachments: pdf
    }
  );

  //不要になったファイルを削除
  DriveApp.getFileById(doc.getId()).setTrashed(true);
  DriveApp.getFileById(pdf.getId()).setTrashed(true);
}

仕組みはシンプルで、本文をGoogleドキュメント文書として一時的に作成してPDFに変換、添付ファイルとしてメール送信しているだけです。

添付ファイル扱いになってしまいますし、送信先によっては受け取りが難しいかもしれませんが、“とりあえず内容を確認してもらいたい!”といった用途では使えますので、文字化けにお困りの方は試してみてはいかがでしょうか。

Power Automate DesktopのXMLアクションを使ってみた。前のページ

2021年7月の人気記事次のページ

関連記事

  1. Google関連

    [Google Apps Script]ヘッダー名を指定してRFC 2822ヘッダーの値を取得する

    以前当ブログで、GASでメールのMessage-IDヘッダーを取得する…

  2. Office関連

    Gmail APIを使ってメール送信するVBAマクロ

    「「Gmail API」β版公開、連動アプリ開発を支援」にもあるように…

  3. Google関連

    【2018年9月版】Google API ConsoleでクライアントIDとクライアントシークレット…

    GoogleのAPIを呼び出すにあたり、クライアントIDとクライアント…

  4. Power Automate for desktop

    [Power Automate Desktop]Google Driveにファイルをアップロードする…

    前々回の記事でGoogle Drive APIの実行に必要なアクセスト…

  5. Google関連

    [Google Apps Script]スライド画面いっぱいの大きさで動画を挿入する

    久しぶりのGoogle Apps Scriptネタです。今回はスラ…

  6. Google関連

    [Google Apps Script]郵便番号から住所を取得する自作関数と住所から地図画像のURL…

    郵便番号検索APIを使って郵便番号から住所を取得する自作関数と、Sta…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP