スプレッドシートで条件指定するだけで、
セグメント配信まで自動化
1
Google Sheets で条件入力
▶
2
Apps Scriptが BigQuery SQL を自動生成
▶
3
BigQuery で実行 / 該当顧客を抽出
▶
4
b-dash / yappli へ自動連携
▼ Google Sheets 入力UIイメージ
| A | B |
|---|
条件の書き方:累計購入金額 >= 100000
結合ロジック:AND または OR
▼ ② 生成されたBigQuery SQL
条件: 0ロジック: AND
-- 「セグメント生成」ボタンを押すとここにBigQuery SQLが出力されます。
▼ ③ BigQuery 実行結果(モック)
JobID: -該当: 0 件
スキャン行数
-
該当行数
-
処理データ量
-
処理時間
-
| customer_code | customer_name | 累計購入金額 | 購入回数 | 最終購入日 | area_name | |
|---|---|---|---|---|---|---|
| ▶ BigQueryで実行 を押してください | ||||||
▼ ④ 配信プラットフォーム連携
🟧 b-dash
マーケティングオートメーションセグメント該当顧客のCSV/SQLを b-dash の セグメントAPI に流し込みます。
未送信
🟦 yappli
アプリプッシュ配信該当顧客のメール/電話を元にプッシュ通知配信ペイロードを生成します。
未送信
▼ Apps Script コード
実際のGoogleスプレッドシートに貼り付けて使えるApps Scriptコードです。 シート名 Segment に同じ形式で入力してください。
📜 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
... (続きはダウンロードで確認)