これはなに

GAS(Google Apps Script)を使って、Netlifyのデプロイ通知をGmail等のメールへ送信する設定をしたときの手順記録。
背景

Netlifyでは、Proプラン以上でないとEmail Notificationが利用できない。そのため、無料のFree & Starterプランだと、そのままではGmail等へデプロイ通知を送信できない。しかし、GAS(Google Apps Script)を使えば、無料でデプロイ通知をGmail等のメールへ送れる。 本稿はその方法を解説する。
全体の流れ

- GAS(Google Apps Script)を作成する
- GASをデプロイする
- NetlifyのWebhookを作成する
- 動作を確認する
手順

1. GAS(Google Apps Script)を作成する

まず、Google Apps Scriptにアクセスする。
アクセスすると下図のような画面が出てくる。
画面の左上にある「新しいプロジェクト」をクリックする。しばらくすると、以下のような画面が表示される。
次に、画面の左上にある「無題のプロジェクト」をクリックして、プロジェクト名を変更する。ここでは「Netlify Deploy Notification」とする。
次に、画面の左側にある「コード.gs」をクリックして、以下のコードを貼り付ける。
"your-email-XXXXXXXX@gmail.com"
の部分を、実際に受信するGmailアドレスに変更すること。
このまま実行してしまうと、“your-email-XXXXXXXX@gmail.com"に通知が送信されてしまう。function doPost(e) {
var json = JSON.parse(e.postData.contents);
var status = json.state; // デプロイ状態(success, failed など)
var siteName = json.name;
var deployUrl = json.admin_url;
var recipient = "your-email-XXXXXXXX@gmail.com"; // 受信するGmailアドレス
var subject = "Netlify Deploy Status: " + status;
var body = "Site: " + siteName + "\n" +
"Status: " + status + "\n" +
"Admin URL: " + deployUrl;
MailApp.sendEmail(recipient, subject, body);
}
2. GASをデプロイする

コードを貼り付けたら、上のバーにある「デプロイ」をクリックし、「新しいデプロイ」を選択する。
すると、以下のような画面が表示される。
左側の「種類の選択」が「ウェブアプリ」担っていることを確認し、「新しい説明文」に適当な名前を入力する。ここでは「Netlify Deploy Notification」とする。
次に、下の「アクセスできるユーザー」を「全員」に変更する。これをしないと、NetlifyからのPOSTリクエストを受け取れない。
最後に、右下の「デプロイ」をクリックする。すると、以下のような画面が表示される。表示されたURLをコピーして控えておく。
3. NetlifyのWebhookを作成する

NetlifyのWebhookを作成する。Netlifyのダッシュボードにアクセスし、対象のサイトを選択する。
次に、左側のメニューから「Site configuration」->「Notifications」->「Emails and webhooks」へ移動する。
ここの「Add notification」をクリックし、「HTTP POST request」を選択する。
選択すると以下のような画面が表示される。
「Event to Listen for」は、通知を受け取るイベントを選択する。たとえば、「Deploy succeeded」を選択すると、デプロイが成功したときに通知を受け取れる。デプロイ開始時なら「Deploy started」を選択する。デプロイ失敗時なら「Deploy failed」を選択する。
「URL to notify」には、先ほどGASをデプロイしたときに表示されたURLを貼り付ける。
「JWS secret token (optional)」には、特に何も入力しなくて良い。
最後に、左下の「Save」をクリックして保存する。すると、「Emails and webhooks」の「Deploy notifications」にフックが追加される。
4. 動作を確認する

Netlifyのダッシュボードに戻り、デプロイを実行する。デプロイが完了すると、Gmailに通知が届く。
まとめ

GASを使えば、Netlifyの無料プランでも、デプロイ通知をメールで受け取れる。