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 Apps Scriptでサイドバーを表示します。…

  2. Google関連

    [Google Apps Script]Google ドライブにある画像をスライドに一括挿入する

    前回の記事では、Google ドライブにある1つの画像ファイルをスライ…

  3. Office関連

    OneNote + Google Apps Scriptで定期的にWebサイトのキャプチャーを撮る方…

    「“OneNote”がアップデート、URLをメールで送るだけでスクリー…

  4. Google関連

    [Google Apps Script]自作関数を定義する

    Excel VBAでは、下記のようなコードを標準モジュールに書けばワー…

  5. Google関連

    [Google Apps Script]Google フォームとkintoneを連携させる方法(添付…

    前回の記事では、GASを使ってGoogle フォームで入力された回答を…

コメント

    • 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