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]自作関数を定義する

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

  2. Power Automate for desktop

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

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

  3. Google関連

    Google AdSenseで「PC のパフォーマンスが低下しています」を表示しないようにする。

    下記のサイトでも話題になっていますが、Google AdSenseの怪…

  4. Power Automate for desktop

    [Power Automate Desktop]Google APIのアクセストークンを取得するフロ…

    前回の記事でGoogle APIのアクセストークンを取得するPower…

  5. 情シス

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

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

コメント

    • 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