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]選択中のスライドに対してのみ処理を行う

    以前、Google スライドですべてのスライドに対して処理を行う方法に…

  2. Google関連

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

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

  3. Google関連

    Google Sheets API v4が登場しました。

    「Google Apps Developer Blog: New wa…

  4. Google関連

    [Google Apps Script]メールからMessage-IDヘッダーを取得する

    はけた(@excelspeedup)氏のツイートで、GASでメールのM…

  5. Google関連

    以前のGoogle マップを使う。

    「「新しい Google マップ」正式公開、地図大きく、精緻すぎる3D…

コメント

    • 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