Segment Builder Demo
Google Sheets × Apps Script × BigQuery × b-dash / yappli

スプレッドシートで条件指定するだけで、
セグメント配信まで自動化

1
Google Sheets で条件入力
2
Apps Scriptが BigQuery SQL を自動生成
3
BigQuery で実行 / 該当顧客を抽出
4
b-dash / yappli へ自動連携

▼ Google Sheets 入力UIイメージ

AB

条件の書き方:
累計購入金額 >= 100000

結合ロジック:
AND または OR

▼ ② 生成されたBigQuery SQL

条件: 0ロジック: AND
-- 「セグメント生成」ボタンを押すとここにBigQuery SQLが出力されます。

▼ ③ BigQuery 実行結果(モック)

JobID: -該当: 0 件
スキャン行数
-
該当行数
-
処理データ量
-
処理時間
-
customer_codecustomer_nameemail累計購入金額購入回数最終購入日area_name
▶ BigQueryで実行 を押してください

▼ ④ 配信プラットフォーム連携

🟧 b-dash

マーケティングオートメーション

セグメント該当顧客のCSV/SQLを b-dash の セグメントAPI に流し込みます。

未送信

🟦 yappli

アプリプッシュ配信

該当顧客のメール/電話を元にプッシュ通知配信ペイロードを生成します。

未送信

▼ Apps Script コード

実際のGoogleスプレッドシートに貼り付けて使えるApps Scriptコードです。 シート名 Segment に同じ形式で入力してください。

⬇ Code.gs をダウンロード⬇ Config.gs をダウンロード
📜 Code.gs プレビュー(先頭部分)
/**
 * Code.gs - スプレッドシートで条件指定 → BigQueryでセグメント生成 → b-dash/yappli連携
 *
 * 想定スプレッドシート(シート名: 'Segment'):
 *   A1: 'セグメント名'   B1: '高額購入者'
 *   A2: '条件1'         B2: '累計購入金額 >= 100000'
 *   A3: '条件2'         B3: '購入回数 >= 5'
 *   A4: '結合ロジック'   B4: 'AND'
 *   ...条件は何行でも追加可(A列が「条件N」のセル)
 *
 * 使い方:
 *   1) スプレッドシートを開く
 *   2) 拡張機能 > Apps Script を開き、Code.gs と Config.gs を貼り付け
 *   3) スプレッドシートをリロードすると「セグメント連携」メニューが追加される
 *   4) 「① セグメント生成(SQLプレビュー)」でBigQuery SQLを確認
 *   5) 「② BigQueryで実行」で実際のクエリを発行
 *   6) 「③ b-dashへ送信」「④ yappliへ送信」で連携
 */

// =========================================================
// メニュー登録
// =========================================================
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('セグメント連携')
    .addItem('① SQLプレビュー', 'menuPreviewSQL')
    .addItem('② BigQueryで実行', 'menuRunBigQuery')
    .addSeparator()
    .addItem('③ b-dashへ送信', 'menuSendToBdash')
    .addItem('④ yappliへ送信', 'menuSendToYappli')
    .addSeparator()
    .addItem('🚀 ワンクリック実行(②→③④)', 'menuRunAll')
    .addToUi();
}

// =========================================================
// シート読み込み: セグメント定義を構造化
// =========================================================
function readSegmentDefinition_() {
  const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Segment')
          || SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const values = sh.getRange('A1:B' + sh.getLastRow()).getValues();
  const obj = { segmentName: '', combineLogic: 'AND', conditions: [] };
  for (let i = 0; i < values.length; i++) {
    const k = String(values[i][0] || '').trim();
    const v = String(values[i][1] || '').trim();
    if (!k) continue;
    if (k === 'セグメント名') obj.segmentName = v;
    else if (k === '結合ロジック') obj.combineLogic = (v.toUpperCase() === 'OR' ? 'OR' : 'AN
... (続きはダウンロードで確認)