GASで顧客データを年ごとに管理!Date.getFullYear()を活用したマーケティング戦略
本記事では、Google Apps Script(GAS)のDate.getFullYear()
関数を活用して、顧客データを年ごとに管理し、マーケティング戦略を最適化する方法を解説します。顧客管理、キャンペーン管理、分析など、マーケティングにおける様々な利用シチュエーションで役立つ、実用的なコード例とカスタマイズ方法を紹介します。
Date.getFullYear()の基本
Date.getFullYear()
は、日付オブジェクトから年を取得するJavaScriptの組み込み関数です。GASでは、スプレッドシートやGoogle Workspaceの他のサービスと連携して、日付データを効率的に処理するために頻繁に使用されます。
function getYearFromDate() {
const date = new Date(); // 現在の日付を取得
const year = date.getFullYear(); // 年を取得
console.log(year); // 結果をログに出力
}
getYearFromDate();
マーケティングでの利用シチュエーション
マーケティングにおいては、顧客の行動履歴や購買データなどを年ごとに分析することで、より効果的なキャンペーン戦略を立てることができます。例えば、特定年に購入した顧客層に絞ったプロモーションや、年間の売上トレンド分析などが可能です。
実装例1:顧客データを年ごとにスプレッドシートに整理
顧客データをスプレッドシートに記録し、Date.getFullYear()
を使って年ごとのシートに自動で振り分けるスクリプトです。
function sortCustomersByYear() {
// スプレッドシートとシートのIDを設定
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("顧客データ");
// データの範囲を取得
const dataRange = sheet.getDataRange();
const data = dataRange.getValues();
// ヘッダー行をスキップ
const header = data.shift();
// 各行のデータを処理
data.forEach(row => {
//日付の列番号
const dateColumnIndex = 2; // 例: 3列目が日付の場合、インデックスは2
const dateValue = row[dateColumnIndex];
const year = new Date(dateValue).getFullYear();
// 年ごとのシートが存在するか確認
let yearSheet = ss.getSheetByName(year.toString());
// 存在しない場合はシートを作成
if (!yearSheet) {
yearSheet = ss.insertSheet(year.toString());
yearSheet.appendRow(header);
}
// データを追加
yearSheet.appendRow(row);
});
}
実装例2:キャンペーンの年次レポートを自動生成
キャンペーンデータを集計し、年ごとの成果をまとめたレポートを自動で作成するスクリプトです。
function generateCampaignReport() {
// スプレッドシートとシートのIDを設定
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("キャンペーンデータ");
// データの範囲を取得
const dataRange = sheet.getDataRange();
const data = dataRange.getValues();
// ヘッダー行をスキップ
const header = data.shift();
// 年ごとのデータを集計
const yearlyData = {};
data.forEach(row => {
//日付の列番号
const dateColumnIndex = 0; // 例: 1列目が日付の場合、インデックスは0
const dateValue = row[dateColumnIndex];
const year = new Date(dateValue).getFullYear();
if (!yearlyData[year]) {
yearlyData[year] = [];
}
yearlyData[year].push(row);
});
// レポートを作成
for (const year in yearlyData) {
let reportSheet = ss.getSheetByName(year + "年レポート");
if (!reportSheet) {
reportSheet = ss.insertSheet(year + "年レポート");
reportSheet.appendRow(header);
}
yearlyData[year].forEach(row => reportSheet.appendRow(row));
}
}
実装例3:特定の年の顧客にメールを送信
特定の年に商品を購入した顧客リストを作成し、メールを送信するスクリプトです。
function sendEmailToSpecificYearCustomers(year) {
// スプレッドシートとシートのIDを設定
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("顧客データ");
// データの範囲を取得
const dataRange = sheet.getDataRange();
const data = dataRange.getValues();
// ヘッダー行をスキップ
data.shift();
// メールを送信する顧客リストを作成
const customerList = [];
data.forEach(row => {
//日付の列番号
const dateColumnIndex = 3; // 例: 4列目が日付の場合、インデックスは3
const dateValue = row[dateColumnIndex];
const customerYear = new Date(dateValue).getFullYear();
if (customerYear === year) {
customerList.push(row[1]); // 例: 2列目がメールアドレスの場合、インデックスは1
}
});
// メールを送信
customerList.forEach(email => {
MailApp.sendEmail({
to: email,
subject: year + "年のご購入ありがとうございます!",
body: "日頃のご愛顧に感謝して、特別なキャンペーンをご用意しました。",
});
});
}
よくある問題とトラブルシューティング
- 日付の形式が正しくない:
Date
オブジェクトに変換できる形式であることを確認してください。 - getFullYear()がNaNを返す:日付が不正な場合に発生します。日付データの形式を確認してください。
- スクリプトの実行時間が長すぎる:データの量が多い場合に発生します。データの範囲を絞ったり、処理方法を最適化したりしてください。
カスタマイズ方法と応用例
- 年だけでなく、月や日ごとの集計:
Date.getMonth()
やDate.getDate()
を組み合わせて使用します。 - 特定の期間のデータを抽出:
Date
オブジェクトの比較演算子を使用して、期間を指定します。 - 他のGoogle Workspaceサービスとの連携: Google AnalyticsやGoogle AdsなどのデータをGASで取得し、分析に活用します。
まとめ
Date.getFullYear()
関数は、GASを活用したマーケティング戦略において、顧客データを年ごとに管理・分析するための強力なツールです。本記事で紹介したコード例を参考に、ぜひご自身の業務に役立ててください。
PR
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう