見出し画像

【超簡単】GASでスプレッドシートの顧客データを一瞬でセグメント化する方法

「顧客のセグメント分けめんどくさいなー」
「エクセルでフィルタしたデータのコピペを自動化したい…」
「GASで自動でできるらしいけど調べてる時間ないわ」

本記事ではこのような方を対象に、GAS(Google App Script)を使ってスプレッドシート上の顧客データを一瞬でセグメント化する方法をご紹介します。

■本記事で分かること
GASを使ってスプレッドシート上の顧客データを一瞬でセグメント化する方法(※セグメントの基準までは作成しませんので注意してください)

■本記事の信頼性
私は、本業でChatGPTなどのAIツールを活用して効率化を実現し、ほぼ毎日定時で帰宅。家族との充実した時間を確保している「なおき」といいます。

AIと全く無縁の体育系で文系出身(数学Ⅱで終わりました)の私でもできる時短術をわかりやすく説明できるよう、Xなどを活用して情報発信しています。

また、note開始3か月で総閲覧回数は約5000回、約5ケタ/月に至る記事の購入をいただいております!

これからも皆様のお役に立てる記事を配信していくのでよろしくお願いします!

では、いつものようにこの記事を読んでくださった方々が1分でも早く帰れることを願い、今回はGASを使ってスプレッドシート上の顧客データを一瞬でセグメント化する方法をご紹介します!

1.Googleスプレッドシートの準備


まずは、Googleスプレッドシートでセグメント化(グループ分け)したいデータを準備します。

今回はサンプルデータをGASでサクッと作ってみましょう。

顧客データとして、顧客ID、名前、年齢、年収、購入頻度、最後の購入日の項目で100人分のデータを準備してみました。

100人分のサンプルデータ

このサンプルデータの作り方が知りたい方はコチラ👇

2.GAS(Google App Script)の設定と実行

それでは次にGASの設定に入っていきます。

ステップ1:Apps Scriptを開く

スプレッドシートデータのメニューバーから
「拡張機能」→「Apps Script」を選択します。

赤枠内をクリック

ステップ2:コードの入力

Apps Scriptが開いたら、デフォルトで入力されている部分のコードを削除してください。

赤枠内を削除

同じところに以下のコードをコピペします。

function segmentCustomers() {
  // スプレッドシートのアクティブシートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // スプレッドシートの全データ範囲を取得
  const dataRange = sheet.getDataRange();
  // データ範囲から全データを二次元配列として取得
  const data = dataRange.getValues();

  // 高価値顧客用と通常顧客用のシートを作成
  const highValueSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('高価値顧客');
  const regularSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('通常顧客');

  // ヘッダー行の追加
  highValueSheet.appendRow(["顧客ID", "名前", "年齢", "年収", "購入頻度", "最後の購入日"]);
  regularSheet.appendRow(["顧客ID", "名前", "年齢", "年収", "購入頻度", "最後の購入日"]);

  // 各顧客データについてループ処理
  data.forEach((row, index) => {
    if (index === 0) return; // ヘッダー行はスキップ

    // セグメント化の条件設定:年収50,000以上かつ購入頻度5回以上を高価値顧客と定義
    if (row[3] > 50000 && row[4] > 5) {
      // 条件に合致する場合は高価値顧客シートにデータを追加
      highValueSheet.appendRow(row);
    } else {
      // 条件に合致しない場合は通常顧客シートにデータを追加
      regularSheet.appendRow(row);
    }
  });
}

このスクリプトは、スプレッドシートからデータを読み取り、指定の条件に該当する対象を新しいシートに自動分類するためのコードです。

具体的な機能の流れは以下の通りです👇

1.スプレッドシートの操作
スプレッドシートからデータを読み取り、新しいシートを作成してデータを振り分けます。

2.データの取得とループ処理
スプレッドシートから取得したデータを一行ずつチェックし、各顧客がどのセグメントに該当するかを判断します。

3.条件分岐
顧客の年収と購入頻度に基づいて、高価値顧客か通常顧客かを分類します。

4.データの追加
条件に応じて、適切なシートに顧客情報を追加していきます。

こんな感じの流れです。

とりあえず、実際にApps Scriptにコピペしたコードは以下のようになりますので確認してください。

コピペしたApps Scriptの画面

【カスタマイズしたい場合】
以下の箇所を変更すればご自身の好みに合わせた変更ができますので、試してみて下さいね!

1.フィルタリング条件を変更したい場合
現在のスクリプトでは、「年収が50,000以上かつ購入頻度が5回以上」の顧客を「高価値顧客」として定義しています。

この部分を変更したい場合は(例えば年齢や地域など)以下の部分をイジってください👇

const highValueCustomers = data.filter(row => row[3] > 50000 && row[4] > 5); // 年収50,000以上かつ購入頻度5回以上の顧客
const regularCustomers = data.filter(row => row[3] <= 50000 || row[4] <= 5); // 上記以外の顧客

2.出力先を変更したい場合
現在のスクリプトでは、高価値顧客と通常顧客をそれぞれ別々のシートに出力しています。

出力先を変更して、別々のスプレッドシートにデータを出力したり、データをデータベースに保存したりすることもできます。

変更箇所は以下です👇

const highValueSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('高価値顧客');
const regularSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('通常顧客');

これらの部分をカスタマイズすることでセグメント化の仕方を変更することができます。

たとえば、新しい条件に基づいて顧客をセグメント化したり、セグメント化されたデータを異なる方法で処理したりすることができるようになるので、いろいろ試してみて下さい!

また、スクリプトの編集後は必ず保存マーク💾を押してください。

ステップ3:実行及び権限の承認

保存出来たら、「▷実行」の部分をクリックして関数transferDataを実行します。

実行すると権限の承認を求められるので、以下の画像の赤枠部分をクリックしていってください。

権限を承認
アカウントをクリック
詳細をクリック
安全ではないページをクリック
許可をクリック

これで、顧客データが指定したセグメントに自動で分類されます。

実際に分類されたのがコチラ👇

高価値顧客のセグメントで分類されたデータ
通常顧客のセグメントで分類されたデータ

ちなみに、ちょっと工夫すれば分類されたデータを自動でグラフ化までできちゃいます👇

グラフまで自動出力させたもの

グラフ化まで含めた記事は今度また紹介したいと思います。

ちなみに、グラフの内容を簡単に説明すると以下です👇

  • 散布図 - 年収と購入頻度の関係

  • ヒストグラム - 年齢分布

  • 棒グラフ - 最後の購入からの日数に基づいた顧客エンゲージメント

このようなグラフ化も1つ1つデータを分析する場合の基礎データとして非常に役に立つのではないでしょうか?

まぁとりあえず、今日のところは以上で作業は終了です!
お疲れ様でした!

4.まとめ

今回は、「GASを使ってスプレッドシート上の顧客データを一瞬でセグメント化する方法」をテーマに紹介しましたが、いかがだったでしょうか?

  1. Googleスプレッドシートで転記用のシートを準備

  2. GAS(Google App Script)コードとトリガーの設定

  3. GASの実行

上記の内容が実行できれば、スプレッドシートのデータを自動で転記できるようになります!

今回紹介した内容で皆さんの業務が少しでも効率化できれば、スキ、SNSでの紹介をしていただけると大変励みになりますので、何卒よろしくお願いします!

このほか、AI×時短術の知識をX(旧Twitter)で紹介していますので、是非フォローしてください!


この記事が気に入ったらサポートをしてみませんか?