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を自由に設定できるのはとても便利だと思います。

マクロで実行したいコマンドのIDを調べる簡単な方法前のページ

[クライアント管理]アップデータを配布せずにAdobe ReaderやAcrobatを更新する方法次のページ

関連記事

  1. Google関連

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

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

  2. Google関連

    Google Apps Script 活用ミートアップ #4に参加しました – #GAS…

    5月20日(月)にNagatacho GRiDで開催された「【エンジニ…

  3. Google関連

    「Save to Drive」ボタンを試してみました。

    下記Webページでも紹介されていますが、Webサイト上のファイルを直接…

  4. 情シス

    [Google Apps Script]メールをemlとして保存する

    今回の記事は「情シスSlack Advent Calendar 201…

  5. Google関連

    [Google Apps Script]マクロの記録のショートカット情報の保存先

    Google スプレッドシートには、Web版ExcelのOffice …

コメント

    • mhisaeda
    • 2015年 4月 16日 5:34pm

    当記事を参考に別アドレスからの自動返信を試みていますがうまく動きません。
    ・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日 6:16pm

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

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

        パラメータの渡し方を間違えていたようです。
        参考にしていたソースが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.

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

Translate

最近の記事

アーカイブ

PAGE TOP