Google関連

[Google Apps Script]別のアドレスからメールを送信する。

Google Apps Scriptでメール送信するGmailApp.sendEmailメソッド、リファレンスを見るとoptionsパラメーターで「from」が指定できることが分かったので、早速試してみました。

function myFunction() {
  var file = DriveApp.getFileById('AB-CDEFG01234567890123456789');
  GmailApp.sendEmail('to@ka-net.org', 
                     'テストメール', 
                     '本文テスト', 
                     {
                       attachments: [file.getAs(MimeType.PDF)],
                       bcc: 'bcc@ka-net.org', 
                       cc: 'cc@ka-net.org', 
                       from: 'gas@ka-net.org', 
                       name: '差出人'
                     });
}

ところが上記スクリプトを実行すると、fromの部分で「無効な引数: gas@ka-net.org」とのエラーが発生してしまいました。

そこでリファレンスをもう一度よく見てみると、fromの説明に

the address that the email should be sent from, which must be one of the values returned by getAliases()

GmailApp.getAliasesメソッド、Gmailアカウントに設定されたエイリアスを取得するメソッドの戻り値を使う、との記載がありました。
要するに、事前にGmailアカウントでエイリアス(別名アドレス)を設定しておかないといけなかったわけですね。

というわけで早速エイリアスを設定します。
設定手順は「別のアドレスからメールを送信する」にある通り、Gmailの設定画面から簡単に設定することができます。

GoogleAppsScript_15_01

GoogleAppsScript_15_02

GoogleAppsScript_15_03

GoogleAppsScript_15_04

GoogleAppsScript_15_05

GoogleAppsScript_15_06

エイリアス設定後、再度上記スクリプトを実行したところ、今度はエラーが発生することなくメールを送信することができました。

GoogleAppsScript_15_07

受信したメールも差出人がちゃんとfromオプションで指定したアドレスになっています。
Gmailアカウントにエイリアスを設定する、という一手間は掛かりますが、スクリプトから送信するメールでfromを自由に設定できるのはとても便利だと思います。

関連記事

  1. Google関連

    [Google Apps Script]スプレッドシート上にウィンドウを表示する(2)

    Google Apps Scriptでスプレッドシート上にウィンド…

  2. Google関連

    「Google I/O 報告会 2017 東京」に参加しました。

    先週の土曜日、6月10日に開催された「Google I/O 報告会 2…

  3. Google関連

    [Google Apps Script]スプレッドシート上にウィンドウを表示する

    Google Apps Scriptでスプレッドシート上にウィンド…

  4. Excel

    Google Charts APIを使ってQRコードの画像を取得するVBAマクロ

    @ITの記事に「Tech TIPS:Google Chart APIを…

  5. Excel

    Google翻訳で文字列を翻訳するマクロ

    ※ 2016/2 時点では下記の方法はもう使用できなくなっています。V…

  6. Google関連

    [Google Apps Script]メニューの追加と確認ダイアログの表示

    Google Apps Scriptで新規メニューを追加し、メニューか…

コメント

    • mhisaeda
    • 2015年 4月 16日

    当記事を参考に別アドレスからの自動返信を試みていますがうまく動きません。
    ・MailApp.sendEmailを使うとメールは送られるもののFromが変わらず
    ・GmailApp.sendEmailを使うとメール自体送られず、ログも出ず(何も動いてないように見える)
    当該スクリプトが今でも動作するかわかりますでしょうか。
    もしくは試すことは可能でしょうか。

    • mhisaedaさん

      当ブログの管理人です。
      ご質問いただきました件について、

      > ・MailApp.sendEmailを使うとメールは送られるもののFromが変わらず

      MailAppクラスのsendEmailメソッドですと、

      https://developers.google.com/apps-script/reference/mail/mail-app

      にあります通り、optionsで“from”を指定することができません。

      > ・GmailApp.sendEmailを使うとメール自体送られず、ログも出ず

      下記コード(アドレスは変えてあります)でテストしてみましたが、問題無く別アドレス(エイリアス)から送信することができました。

      function myFunction() {
        GmailApp.sendEmail(
          "to@hogehogetest.jp", 
          "Test Subject", 
          "Test Body", 
          {
            from: "from@hogehogetest.jp", 
            name: "TEST MAIL"
          }
        );
      }

      メールが送信できないとのことですので、エイリアスの設定確認やメール送信部分のみのミニマムコードでテストされてはいかがでしょうか。

        • mhisaeda
        • 2015年 4月 17日

        きぬあささん、
        ご確認いただきありがとうございます。

        記載いただいているコードで
        無事メール送信できました。

        パラメータの渡し方を間違えていたようです。
        参考にしていたソースがHTMLメールのもので、
        MailAppクラスだと動作し、GmaiAppクラスだと動作しませんでした。

        【送信されない】
        function myFunction() {
        GmailApp.sendEmail(
        {
        to: ‘to@hogehogetest.jp’,
        subject: ‘Test Subject’,
        htmlBody: ‘Test Body’,
        from: ‘from@hogehogetest.jp’,
        name: ‘TEST MAIL’,
        });
        }

        【送信される。ただしFrom指定はきかない】
        function myFunction() {
        MailApp.sendEmail(
        {
        to: ‘to@hogehogetest.jp’,
        subject: ‘Test Subject’,
        htmlBody: ‘Test Body’,
        from: ‘from@hogehogetest.jp’,
        name: ‘TEST MAIL’,
        });
        }

        どうもありがとうございました。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP