5分でできる!GASでメール送信のアウトルック自動化方法

オフィスで毎日繰り返し手動でメールを送信するのが面倒なんだけど、GASでOutlookを使って自動化できたら便利だと思ってさ…
猫男
猫男
catman
catman
それは良い考えだ。GASでOutlookのメール送信を自動化する方法を教えてあげよう。

GASでOutlookのメールを自動送信する仕組みを理解する

まず基本を理解しよう。

GAS自身ではOutlookの直接操作はできない。

でも、MicrosoftのGraph APIを使えば実現可能だ。このAPIを通じて、Outlookのメールサービスと連携できるようになる。

Microsoft Graph APIの準備

Graph APIを使う準備が必要だ。Microsoft Azureポータルからアプリを登録して、APIアクセスの許可を確立する必要がある。

1. Azureポータルにアクセス: Azureポータルで新規アプリを登録し、API許可を構成する。
2. 必要なAPI権限の設定: Outlookメールの送信権限を設定し、それらを認可する。
3. クライアントIDとシークレットの取得: 後の手順でGASに設定するクライアントIDとシークレットをコピーすること。

Graph APIをGASで使う

GASでのプログラムはAPIのエンドポイントと通信する役割を果たす。このプロセスを理解しよう。


function sendOutlookEmail() {
  var accessToken = getAccessToken(); // アクセストークンを取得する関数
  var email = {
    "message": {
      "subject": "自動送信メール",
      "body": {
        "contentType": "Text",
        "content": "これはGASから送信したテストメールです。"
      },
      "toRecipients": [
        {
          "emailAddress": {
            "address": "recipient@example.com"
          }
        }
      ]
    }
  };
  
  var options = {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": "Bearer " + accessToken
    },
    "payload": JSON.stringify(email)
  };
  
  UrlFetchApp.fetch("https://graph.microsoft.com/v1.0/me/sendMail", options);
}

このスクリプトは、GASでOutlookメールを送信する基本的な例だ。

  • sendOutlookEmail() はメールを送信する主関数。
  • getAccessToken() を呼び出してアクセストークンを取得し、Graph APIで認証されたリクエストを送信する。
  • email オブジェクトは送信するメールの詳細を含んでいる。宛先、件名、本文の情報をここで設定する。
  • UrlFetchApp.fetch() を使って、Graph APIのメール送信エンドポイントに対してPOSTリクエストを送信。この時、options パラメータでリクエストオプションを指定する。
これなら、手動で毎回送信しなくても済むんだ!自勤に使いこなせたら、朝のルーチンはもっと楽になるね。
猫男
猫男

実践練習問題

以下のコードを使って、宛先メールアドレスを2つ以上追加する方法を考えてみよう。


function sendOutlookEmail() {
// 省略
}

 

解答・解説


function sendOutlookEmail() {
  var accessToken = getAccessToken(); // アクセストークンを取得する関数
  var email = {
    "message": {
      "subject": "自動送信メール",
      "body": {
        "contentType": "Text",
        "content": "これはGASから送信したテストメールです。"
      },
      "toRecipients": [
        {
          "emailAddress": {
            "address": "recipient1@example.com"
          }
        },
        {
          "emailAddress": {
            "address": "recipient2@example.com"
          }
        }
      ]
    }
  };
  
  var options = {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": "Bearer " + accessToken
    },
    "payload": JSON.stringify(email)
  };
  
  UrlFetchApp.fetch("https://graph.microsoft.com/v1.0/me/sendMail", options);
}

この解答では、toRecipients 配列内に複数のemailAddressオブジェクトを追加することで、複数の宛先に送信できるようにしている。