【GA4でメールの開封取得】GASでメール送信と開封イベントの取得

GAS

こんにちは!前回の記事に続き、GA4 を使ってメール開封率を取得する方法について解説します。今回は、Google Apps Script (GAS) を使ってメールを送信し、その開封を検知してGA4にイベントとして送信する方法を詳しく紹介します。

これにより、GASとGA4を使って、手軽にメールの開封状況をトラッキングできるようになります。早速、手順を見ていきましょう!

1. GASでメール送信のスクリプトを作成

まずは、GAS を使ってメールを送信するためのスクリプトを作成します。

メール送信スクリプト

以下のスクリプトを使って、指定したメールアドレスにHTMLメールを送信します。メールの本文には、開封を検知するために1pxの画像を埋め込むことになります。

function sendEmail(html, email) {
const spreadsheet = SpreadsheetApp.openById(SSID); // SSIDにはスプレッドシートのIDを記載
const subject = '件名'; // メールの件名
const body = html; // メールの本文(HTMLで記述)

try {
// メール送信(いまログイン中のアカウントで送信されます)
MailApp.sendEmail({
to: email,
subject: subject,
htmlBody: body
});
} catch (e) {
console.log(e);
}
}

この関数では、HTMLメールを送信し、メール本文に開封イベントを検知する画像(後ほど設定する1pxの画像)を埋め込みます。

2. メール送信メニューの追加

次に、スプレッドシートのメニューバーに「メール送信」メニューを追加し、簡単に操作できるようにします。

function onOpen() {
const ui = SpreadsheetApp.getUi();
const menu = ui.createMenu("メール送信");
menu.addItem("メール送信", "sendEmail");

menu.addToUi();
}

このコードを追加することで、スプレッドシートのメニューバーから「メール送信」オプションを選択できるようになります。

onOpen関数は、スプレッドシートが開かれたときに実行される関数です。

3. メール開封イベントの検知

次に、メール開封イベントをGA4に送信するためのスクリプトを作成します。メールに埋め込んだ1px画像が読み込まれると、そのタイミングでGA4にイベントが送信されます。

画像を返すスクリプト

メール内に埋め込む1pxの画像を提供するために、以下のスクリプトを作成します。このスクリプトは、画像が表示されるときにGA4に開封イベントを送信します。

// GETリクエストでピクセルを提供する
function doGet(e) {
logEmailOpenToGA4("companyName", "name");

// 空の1x1ピクセル画像を返す
const img = Utilities.base64EncodeWebSafe('\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x4c\x01\x00\x3b');
return ContentService.createTextOutput(img).setMimeType(ContentService.MimeType.PNG);
}

このスクリプトでは、1×1ピクセルの画像を返すことで、画像の読み込みをトリガーにGA4にイベントを送信します。

GA4にイベントを送信するスクリプト

画像が読み込まれたタイミングで、GA4に開封イベントを送信します。以下のスクリプトを使って、Measurement Protocol 経由でGA4にイベントを送ります。

// GA4 Measurement Protocolにデータを送信する関数
function logEmailOpenToGA4(companyName, name) {
const MEASUREMENT_ID = 'G-・・・・'; // GA4の測定ID
const API_SECRET = '・・・'; // GA4で発行したAPIシークレット

const payload = {
client_id: "1",
user_id: "email_tracking",
events: [{
name: "email_tracking",
params: {
action: "open",
}
}]
};

const url = `https://www.google-analytics.com/mp/collect?measurement_id=${MEASUREMENT_ID}&api_secret=${API_SECRET}`;

const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload),
};

UrlFetchApp.fetch(url, options);
}

このコードでは、GA4のMeasurement Protocol APIを使用して、開封イベントをGA4に送信します。

4. メール本文に画像を埋め込む

次に、メールの本文に先ほど作成した画像URLを埋め込みます。<img>タグを使って、画像が読み込まれるときにイベントが発生するようにします。

<img src="https://script.google.com/macros/s/・・・/exec" width="1" height="1" style="display:none;">

この<img>タグがメール本文に埋め込まれており、受信者がメールを開封した際に、この画像が読み込まれ、GA4に開封イベントが送信されます。

5. まとめ

今回の記事では、GASを使ってメールの開封率をGA4で取得する方法を解説しました。メール送信のスクリプトを作成し、メール本文に1pxの画像を埋め込んで、その画像の読み込み時にGA4にイベントを送信する流れを実装しました。

これで、GASGA4 を組み合わせて、メール開封率をトラッキングする仕組みが完成しました。


参考文献

コメント