addashboard-cli 0.6.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -12,6 +12,7 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
12
12
|
const path_1 = __importDefault(require("path"));
|
|
13
13
|
const apiClient_1 = require("../lib/apiClient");
|
|
14
14
|
const localPath_1 = require("../lib/localPath");
|
|
15
|
+
const submit_plan_1 = require("../schemas/submit-plan");
|
|
15
16
|
exports.SUBMIT_PLATFORMS = ['meta', 'yda', 'google', 'smartnews', 'bytedance'];
|
|
16
17
|
/** v5 §5.3: platform → submit エンドポイント (T-02 yda, T-03 google, T-04 smartnews, T-05 bytedance) */
|
|
17
18
|
function resolveSubmitPath(platform) {
|
|
@@ -577,25 +578,27 @@ async function runSubmitPlan(input) {
|
|
|
577
578
|
return { ok: false, exitCode: 2, error: '本実行するには --yes を明示してください (dry-run なしで実 API を叩く操作です)' };
|
|
578
579
|
}
|
|
579
580
|
// 計画ファイル読込
|
|
580
|
-
let
|
|
581
|
+
let raw;
|
|
581
582
|
try {
|
|
582
|
-
|
|
583
|
+
raw = JSON.parse(fs_1.default.readFileSync(input.planFile, 'utf8'));
|
|
583
584
|
}
|
|
584
585
|
catch (e) {
|
|
585
586
|
return { ok: false, exitCode: 1, error: `plan_read_error: ${e.message}` };
|
|
586
587
|
}
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
588
|
+
/* スキーマ検証。dry-run より手前で落とす。
|
|
589
|
+
階層キーの取り違え (meta なのに adGroups) や広告名・finalUrl の欠落は、
|
|
590
|
+
ここで止めないと backend の 400 まで進んで原因が読めなくなる。 */
|
|
591
|
+
const parsed = (0, submit_plan_1.parseSubmitPlan)(raw);
|
|
592
|
+
if (!parsed.ok) {
|
|
590
593
|
return {
|
|
591
594
|
ok: false,
|
|
592
595
|
exitCode: 1,
|
|
593
|
-
error: `
|
|
596
|
+
error: `plan_schema_error: 入稿計画JSONの形式が不正です\n - ${parsed.errors.join('\n - ')}`,
|
|
594
597
|
};
|
|
595
598
|
}
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
+
const plan = parsed.plan;
|
|
600
|
+
// platform 未記載は yda 扱い (platform 導入前に書き出された計画ファイルとの後方互換)
|
|
601
|
+
const platform = (plan.platform ?? 'yda');
|
|
599
602
|
// progress 初期化 (無ければ campaigns から生成)
|
|
600
603
|
if (!Array.isArray(plan.progress) || plan.progress.length !== plan.campaigns.length) {
|
|
601
604
|
plan.progress = plan.campaigns.map((cp, i) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/commands/submission.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/commands/submission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.submitPlanSchema = exports.metaSubmitPlanSchema = exports.ydaSubmitPlanSchema = exports.planProgressSchema = void 0;
|
|
4
|
+
exports.formatPlanIssues = formatPlanIssues;
|
|
5
|
+
exports.parseSubmitPlan = parseSubmitPlan;
|
|
6
|
+
/**
|
|
7
|
+
* 入稿計画 JSON (planVersion:1) のスキーマ。
|
|
8
|
+
*
|
|
9
|
+
* プランナー (`skills/ad-ops/ad-planner.html` の `buildSubmitPlanWithStats`) が書き出し、
|
|
10
|
+
* `webgram submit-plan` が読む JSON の**唯一の契約**。型はここから `z.infer` で導出する。
|
|
11
|
+
*
|
|
12
|
+
* ⚠ backend の `backend/src/schemas/meta.ts` とは別リポジトリ扱い (cli は独立した npm パッケージで
|
|
13
|
+
* backend を import できない)。**backend 側の入稿スキーマを変えたらここも直す**。
|
|
14
|
+
*
|
|
15
|
+
* 厳しさの方針:
|
|
16
|
+
* - エンベロープ (planVersion / platform / accountId / campaigns) と**階層キー**は strict。
|
|
17
|
+
* ここがズレると「Meta なのに adGroups が入っている」類の事故になり、dry-run まで気づけない。
|
|
18
|
+
* - キャンペーン / 広告セット / 広告の**中身は passthrough**。backend がフィールドを足したときに
|
|
19
|
+
* CLI 側が古いだけで入稿できなくなるのを避ける (検証の主戦場は backend の zod)。
|
|
20
|
+
* - ただし「これが無いと入稿が必ず失敗する」キーだけは required にして手前で落とす。
|
|
21
|
+
*/
|
|
22
|
+
const zod_1 = require("zod");
|
|
23
|
+
/** 広告 (媒体共通の最低限)。媒体固有のキーは passthrough で素通しする。 */
|
|
24
|
+
const adSchema = zod_1.z
|
|
25
|
+
.object({
|
|
26
|
+
adName: zod_1.z.string().min(1, '広告名が空です'),
|
|
27
|
+
finalUrl: zod_1.z.string().min(1, '最終リンク先URLが空です'),
|
|
28
|
+
})
|
|
29
|
+
.passthrough();
|
|
30
|
+
/** YDA: campaigns[].adGroups[].ads[] */
|
|
31
|
+
const ydaAdGroupSchema = zod_1.z
|
|
32
|
+
.object({
|
|
33
|
+
name: zod_1.z.string().min(1, '広告グループ名が空です'),
|
|
34
|
+
ads: zod_1.z.array(adSchema),
|
|
35
|
+
})
|
|
36
|
+
.passthrough();
|
|
37
|
+
const ydaCampaignSchema = zod_1.z
|
|
38
|
+
.object({
|
|
39
|
+
name: zod_1.z.string().min(1, 'キャンペーン名が空です'),
|
|
40
|
+
adGroups: zod_1.z.array(ydaAdGroupSchema),
|
|
41
|
+
})
|
|
42
|
+
.passthrough();
|
|
43
|
+
/** Meta: campaigns[].adSets[].ads[] */
|
|
44
|
+
const metaAdSetSchema = zod_1.z
|
|
45
|
+
.object({
|
|
46
|
+
name: zod_1.z.string().min(1, '広告セット名が空です'),
|
|
47
|
+
ads: zod_1.z.array(adSchema),
|
|
48
|
+
})
|
|
49
|
+
.passthrough();
|
|
50
|
+
const metaCampaignSchema = zod_1.z
|
|
51
|
+
.object({
|
|
52
|
+
name: zod_1.z.string().min(1, 'キャンペーン名が空です'),
|
|
53
|
+
adSets: zod_1.z.array(metaAdSetSchema),
|
|
54
|
+
})
|
|
55
|
+
.passthrough();
|
|
56
|
+
/** 1 キャンペーンの入稿進捗 (計画ファイルに書き戻して再開可能にする)。 */
|
|
57
|
+
exports.planProgressSchema = zod_1.z.object({
|
|
58
|
+
index: zod_1.z.number().int(),
|
|
59
|
+
name: zod_1.z.string(),
|
|
60
|
+
/**
|
|
61
|
+
* `unknown` は「リクエストがタイムアウトして成否が判定できない」状態。
|
|
62
|
+
* **failed にしてはいけない**(再実行で同じキャンペーンをもう一度作る)。
|
|
63
|
+
*/
|
|
64
|
+
status: zod_1.z.enum(['pending', 'submitted', 'failed', 'unknown']),
|
|
65
|
+
campaignId: zod_1.z.string().nullable(),
|
|
66
|
+
error: zod_1.z.string().nullable(),
|
|
67
|
+
submittedAt: zod_1.z.string().nullable(),
|
|
68
|
+
targetErrors: zod_1.z.array(zod_1.z.string()).optional(),
|
|
69
|
+
});
|
|
70
|
+
const envelope = {
|
|
71
|
+
planVersion: zod_1.z.number().int(),
|
|
72
|
+
accountId: zod_1.z.string().min(1, 'accountId が空です'),
|
|
73
|
+
progress: zod_1.z.array(exports.planProgressSchema).optional(),
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* platform 未記載は yda 扱い (platform 導入前に書き出された計画ファイルとの後方互換)。
|
|
77
|
+
* 判別に使うのは platform であって階層キーではない — キーの取り違えを検出したいので、
|
|
78
|
+
* 「adSets が入っている yda プラン」はここで落ちるのが正しい。
|
|
79
|
+
*/
|
|
80
|
+
exports.ydaSubmitPlanSchema = zod_1.z.object({
|
|
81
|
+
...envelope,
|
|
82
|
+
platform: zod_1.z.literal('yda').optional(),
|
|
83
|
+
campaigns: zod_1.z.array(ydaCampaignSchema).min(1, '計画に campaigns がありません'),
|
|
84
|
+
});
|
|
85
|
+
exports.metaSubmitPlanSchema = zod_1.z.object({
|
|
86
|
+
...envelope,
|
|
87
|
+
platform: zod_1.z.literal('meta'),
|
|
88
|
+
campaigns: zod_1.z.array(metaCampaignSchema).min(1, '計画に campaigns がありません'),
|
|
89
|
+
});
|
|
90
|
+
exports.submitPlanSchema = zod_1.z.union([exports.metaSubmitPlanSchema, exports.ydaSubmitPlanSchema]);
|
|
91
|
+
/**
|
|
92
|
+
* zod のエラーを「どのキャンペーン・どの広告が壊れているか」が分かる1行に畳む。
|
|
93
|
+
* path をそのまま出すと `campaigns.0.adSets.1.ads.3.finalUrl` になり、
|
|
94
|
+
* 入稿計画を開いて数えないと当該行に辿り着けないため、日本語の位置に直す。
|
|
95
|
+
*/
|
|
96
|
+
function formatPlanIssues(error) {
|
|
97
|
+
return error.issues.slice(0, 20).map((i) => {
|
|
98
|
+
const where = i.path
|
|
99
|
+
.reduce((acc, seg, idx, arr) => {
|
|
100
|
+
if (typeof seg === 'number')
|
|
101
|
+
return acc;
|
|
102
|
+
const next = arr[idx + 1];
|
|
103
|
+
const label = seg === 'campaigns'
|
|
104
|
+
? 'キャンペーン'
|
|
105
|
+
: seg === 'adGroups'
|
|
106
|
+
? '広告グループ'
|
|
107
|
+
: seg === 'adSets'
|
|
108
|
+
? '広告セット'
|
|
109
|
+
: seg === 'ads'
|
|
110
|
+
? '広告'
|
|
111
|
+
: String(seg);
|
|
112
|
+
acc.push(typeof next === 'number' ? `${label}[${next + 1}]` : label);
|
|
113
|
+
return acc;
|
|
114
|
+
}, [])
|
|
115
|
+
.join(' > ');
|
|
116
|
+
return where ? `${where}: ${i.message}` : i.message;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 計画ファイルを検証する。失敗時は人が読める複数行のエラーを返す。
|
|
121
|
+
* union のエラーはそのままだと「どちらの媒体としても不正」が2重に出て読めないので、
|
|
122
|
+
* platform を先に見て単一スキーマで検証する。
|
|
123
|
+
*/
|
|
124
|
+
function parseSubmitPlan(raw) {
|
|
125
|
+
const platform = raw?.platform ?? 'yda';
|
|
126
|
+
if (platform !== 'yda' && platform !== 'meta') {
|
|
127
|
+
return { ok: false, errors: [`submit-plan は yda / meta のみ対応です (指定: ${String(platform)})`] };
|
|
128
|
+
}
|
|
129
|
+
const schema = platform === 'meta' ? exports.metaSubmitPlanSchema : exports.ydaSubmitPlanSchema;
|
|
130
|
+
const r = schema.safeParse(raw);
|
|
131
|
+
return r.success ? { ok: true, plan: r.data } : { ok: false, errors: formatPlanIssues(r.error) };
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=submit-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-plan.js","sourceRoot":"","sources":["../../src/schemas/submit-plan.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "addashboard-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "webgram CLI — ad-dashboard (https://macchiato.site) を Claude Code / Codex CLI から操作するための CLI",
|
|
5
5
|
"bin": {
|
|
6
6
|
"webgram": "./dist/index.js"
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "tsc",
|
|
38
|
+
"typecheck": "tsc --noEmit && tsc -p tsconfig.test.json",
|
|
38
39
|
"dev": "tsx src/index.ts",
|
|
39
40
|
"start": "node dist/index.js",
|
|
40
41
|
"test": "vitest run",
|
|
@@ -46,7 +47,8 @@
|
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
49
|
"axios": "^1.7.7",
|
|
49
|
-
"commander": "^12.1.0"
|
|
50
|
+
"commander": "^12.1.0",
|
|
51
|
+
"zod": "4.4.3"
|
|
50
52
|
},
|
|
51
53
|
"devDependencies": {
|
|
52
54
|
"@playwright/test": "1.61.1",
|
package/skills/ad-ops/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ad-ops
|
|
3
|
-
description: ad-dashboard (https://macchiato.site) の webgram CLI 経由で広告を YDA / Meta に半自動入稿する (TikTok は将来対応予定)
|
|
3
|
+
description: ad-dashboard (https://macchiato.site) の webgram CLI 経由で広告を YDA / Meta に半自動入稿する (TikTok は将来対応予定)。発火したら「入稿先アカウント&媒体」→「今回の方式 (HTMLプランナーで手動指定=既定 / 前回の入稿計画を参考にする / チャットで1つずつ聞く)」の順に確定させる。入稿の実体は 2 系統 — 動画・ローカル画像の API 入稿フロー (固定デフォルト + URL 空き番号自動割当 + 一覧 OK 確認、現状 YDA) と、入稿プランナー `ad-planner.html` (YDA / Meta を案件×媒体の統合プルダウンで切替する GUI → 入稿計画JSON → `submit-plan` で dry-run → 本実行)。「広告運用」「広告入稿」「動画入稿」「まとめ入稿」「ASC 入稿」「YDA 入稿」「Meta 入稿」「入稿プランナー」「YDA入稿プランナー」「Meta入稿プランナー」「入稿シート」「TikTok 入稿」「webgram」「ad-dashboard」と言われたら使用。Node.js が入っていれば追加インストール不要 (`npx` 経由)。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# ad-ops skill (広告運用スキル)
|
|
@@ -55,19 +55,39 @@ skills/ad-ops/scripts/adops.sh preflight yda <accountId>
|
|
|
55
55
|
> 全件パスしたが、`list accounts` が返す 17 件に含まれておらず本実行で 401。
|
|
56
56
|
> フェーズ1〜3 の作業がすべて無駄になった。
|
|
57
57
|
|
|
58
|
-
##
|
|
58
|
+
## 【必須】入口: アカウント&媒体 → 今回の方式
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
**本スキルは広告入稿の専用スキル**。発火したら `preflight` → **入稿先アカウント&媒体** → **今回の方式** の順で確定させ、対応するフローへ入る。用途を4択で聞く旧メニューは廃止した(実運用がほぼ入稿なので毎回の無駄だった)。
|
|
61
|
+
|
|
62
|
+
### 入口ステップ1: 入稿先アカウント & 媒体の決定
|
|
63
|
+
|
|
64
|
+
* **`preflight` は全分岐の共通の前提**。落ちたら分岐せずその場で止めて報告する
|
|
65
|
+
* `AskUserQuestion` で **案件 × 媒体**を選ばせる。選択肢は `アカウント/<platform>/index.json`(プランナーのヘッダー統合プルダウン `#accSelect` と同じ母集団)から作り、`webgram list accounts` の結果と突き合わせる
|
|
66
|
+
* **【必須】`list accounts` に無い ID は本実行で 401 になり、dry-run は通ってしまう**(冒頭の失敗例を参照)。**ここで弾いて先に進ませない**
|
|
67
|
+
* ユーザーの依頼にアカウント名・媒体が明示されていれば、確認を省いて既定として提示してよい
|
|
68
|
+
* ここで決まった `platform` / アカウント名は**以降の全分岐で使い回す。下流で再度聞かない**(旧 Step 3 の「入稿先アカウント名」はこのステップに前倒しした)
|
|
69
|
+
|
|
70
|
+
### 入口ステップ2: 今回の方式(3択)
|
|
71
|
+
|
|
72
|
+
* **提示条件**: ユーザーの発話に入稿パラメータ(予算・CTA・tCPA・配信開始日時・キャンペーン名など)も方式の明示も無いときだけ `AskUserQuestion` を出す。明示があればスキップして該当フローへ直行する
|
|
61
73
|
|
|
62
74
|
| 選択肢 | 遷移先 |
|
|
63
75
|
|---|---|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
76
|
+
| **HTMLプランナーで手動指定(既定)** | ステップ1の結果を渡して `adops.sh planner --platform <pf> --account "<名前>"` を起動 → 「入稿プランナー」起点フロー(4フェーズ)。以降のパラメータは GUI で決めるので個別に聞かない |
|
|
77
|
+
| 前回の入稿計画を参考にする | 下の「直近プラン採用ロジック」→ 引き継ぎ値を提示して差分だけ確認 → 動画/画像入稿フロー Step 4(一覧提示+OK 確認)へ |
|
|
78
|
+
| チャットで1つずつ聞く | 動画入稿フロー Step 1〜6 / 画像入稿フロー Step 1〜6 |
|
|
79
|
+
|
|
80
|
+
* 「チャットで1つずつ聞く」の**動画/画像の振り分けは素材パスの拡張子で判定する**(`.mp4` 等 → 動画 / `.jpg` `.jpeg` `.png` `.gif` → 画像)。素材が未提示なら `AskUserQuestion` でパス提示を促す(Step 1 の手順をそのまま使う)
|
|
68
81
|
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
### 直近プラン採用ロジック(「前回の入稿計画を参考にする」を選んだとき)
|
|
83
|
+
|
|
84
|
+
1. `入稿計画/` 配下を、**ステップ1で決めた案件×媒体アカウント**で絞り込む。判定は JSON 内の `platform` と `campaigns[].accountId`(Meta は `act_` 付き)を正とし、ファイル名は候補の絞り込み補助にとどめる
|
|
85
|
+
2. タイムスタンプ降順で **最新1件を自動採用**し、**採用したファイルパスをユーザーに提示する**
|
|
86
|
+
3. 該当が 0 件なら、その旨を伝えて「チャットで1つずつ聞く」にフォールバックする
|
|
87
|
+
4. **引き継ぐのは入稿パラメータだけ**(予算 / CTA / アトリビューション / tCPA・入札戦略 / ターゲティング / 配信日時)。**クリエイティブ(mediaId・画像/動画パス)・キャンペーン名・URL 末尾番号は引き継がない** — 毎回新規なので、URL 空き番号の自動割当と CP 名の自動生成(Step 3 のルール)で採り直す
|
|
88
|
+
5. 引き継いだ値を一覧で提示し、**変更点を 1 問で聞く**。以降は Step 4(一覧提示 → OK 確認・必須)へ合流する
|
|
89
|
+
|
|
90
|
+
* **【必須】これはパラメータの初期値として読むだけ。** 過去の入稿計画JSONの存在を**入稿済み・フェーズ完了の根拠にしてはならない**(後述の同名ガードを参照)
|
|
71
91
|
|
|
72
92
|
## 動画入稿フロー (メイン用途)
|
|
73
93
|
|
|
@@ -114,14 +134,32 @@ npx -y addashboard-cli@latest auth whoami
|
|
|
114
134
|
|
|
115
135
|
* **スマートターゲティング: 常時 ON** (backend 側の既定も `true`。明示的に OFF にしたい場合だけユーザーに確認する)
|
|
116
136
|
|
|
137
|
+
* **配信開始日時: 翌日 05:00** (プランナーで空欄のときの既定。**YDA は Yahoo Ads API の `startDate` が日付のみなので実際に効くのは「翌日」まで**で、05:00 は載らない)
|
|
138
|
+
|
|
117
139
|
**必ずユーザー確認 or 自動生成が必要な項目**:
|
|
118
140
|
|
|
119
|
-
* **入稿先アカウント名**:
|
|
141
|
+
* **入稿先アカウント名**: **入口ステップ1 で確定済み**。ここで再度聞かない (アカウント名で指定可。アカウント ID は不要、CLI 側で名前 → ID 解決)
|
|
120
142
|
|
|
121
143
|
* **入稿リンク (URL 末尾番号)**: 既存アカウントの入稿履歴から使用済み番号を取得し、**未使用の空き番号を自動割当**
|
|
122
144
|
|
|
123
145
|
* 連番でなくて OK。被らないことだけ守る (例: 1〜50 が使用中なら 51 以降、または途中の 7 が未使用なら 7)
|
|
124
146
|
|
|
147
|
+
* **【必須】「使用済み」は媒体側で配信中 (ACTIVE) のものだけ。配信停止 (PAUSED / 配信オフ) のキャンペーン・広告が使っている番号は「未使用」として扱い、再利用の候補に入れる**
|
|
148
|
+
|
|
149
|
+
* 判定材料は `webgram list --platform <媒体> --resource campaigns` が返す `status` (アカウントJSONの `refs.campaigns[].status` にも入る)
|
|
150
|
+
* **status が取れなかった媒体・アカウントでは従来どおり全件を使用済みとして扱い、「オフ判定ができなかった」ことをユーザーに明示する。** 勝手に空き扱いにしない
|
|
151
|
+
* **番号の持ち主 (キャンペーン名 / 広告名) と配信状態をセットで確認してから再利用する。** オフでも再開予定のものがあり得る
|
|
152
|
+
|
|
153
|
+
* **【必須】番号を決める前に AskUserQuestion で採番方針を選ばせる**(既定は「オフの中での MAX」)
|
|
154
|
+
|
|
155
|
+
| 選択肢 | 挙動 |
|
|
156
|
+
| --- | --- |
|
|
157
|
+
| オフの中での MAX (既定) | 配信停止番号のうち最大のものを再利用する |
|
|
158
|
+
| オフの中での MIN | 配信停止番号のうち最小のものを再利用する |
|
|
159
|
+
| オフを含めた未使用番号全体の MIN | 欠番 + 配信停止番号をすべて未使用とみなし、その最小を使う |
|
|
160
|
+
|
|
161
|
+
* 選択後、判定に使った **使用済み (ACTIVE) 番号一覧 / オフ番号一覧 / 割り当てた番号** を Step 4 の確認表の直前に提示する
|
|
162
|
+
|
|
125
163
|
* ベース URL は案件ごとに固定 (Bit.ly 系ドメイン等)。末尾パラメータ番号のみ可変
|
|
126
164
|
|
|
127
165
|
* 案件ごとの URL 一覧はシート管理されているので、そこから引く運用も可
|
|
@@ -139,6 +177,9 @@ npx -y addashboard-cli@latest auth whoami
|
|
|
139
177
|
| 1 | YDA | video\_A.mp4 | 07\_video\_A\_2026-07-16 | <https://.../?p=07> | 12,000 | tCPA 8,500 |
|
|
140
178
|
| 2 | YDA | video\_B.mp4 | 08\_video\_B\_2026-07-16 | <https://.../?p=08> | 12,000 | tCPA 8,500 |
|
|
141
179
|
|
|
180
|
+
**表の直前に、URL 末尾番号の根拠を出す**: 採番方針 / 使用済み (ACTIVE) 番号 / オフ (PAUSED) 番号 / 割り当てた番号。
|
|
181
|
+
オフ判定ができなかった場合はその旨も書く。
|
|
182
|
+
|
|
142
183
|
URL 番号・予算・配信戦略に不満があれば Step 3 に戻ってパラメータを差し替える。
|
|
143
184
|
|
|
144
185
|
### Step 5: 順次実行
|
|
@@ -280,7 +321,6 @@ skills/ad-ops/scripts/adops.sh open yda <accountId> campaigns
|
|
|
280
321
|
| 入稿計画 順次入稿 実入稿 | `npx -y addashboard-cli@latest submit-plan --plan-file <入稿計画.json> --no-dry-run --yes`(1CPずつ・再開可能) |
|
|
281
322
|
|
|
282
323
|
**【重要】本実行がタイムアウトしたら「失敗」と決めつけない。** CLI の進捗は `unknown`(成否不明)になる。backend は入稿を続けており、**キャンペーンと広告が作成済みのことがある**(実測あり)。この状態で再実行すると二重入稿になるため `unknown` は自動でスキップされる。媒体の管理画面を確認し、作成済みなら計画ファイルの `status` を `"submitted"`、未作成なら `"pending"` に直してから再実行する(exit code は 3)。
|
|
283
|
-
| チーム週次レビュー取得 | `npx -y addashboard-cli@latest review --team <伊藤T\|松井T> [--week <YYYY-MM-DD>]` |
|
|
284
324
|
| 「予実」「予実管理」「今月の予実」「着地予測」「予実サマリ」 | `npx -y addashboard-cli@latest pl summary`(月指定は `pl summary --month YYYY-MM`) |
|
|
285
325
|
| 「案件別の予実」「案件ごとの損益」 | `npx -y addashboard-cli@latest pl projects`(`--month` / `--status` / `--platform` で絞り込み可) |
|
|
286
326
|
|
|
@@ -290,47 +330,6 @@ skills/ad-ops/scripts/adops.sh open yda <accountId> campaigns
|
|
|
290
330
|
|
|
291
331
|
***
|
|
292
332
|
|
|
293
|
-
## チーム週次レビュー取得(review コマンド)
|
|
294
|
-
|
|
295
|
-
チーム × 週で **全案件の週次レビュー(課題・今週のアクションプラン)を 1 回でまとめて取得** し、LLM(このセッション)が案件ごとに要約するためのコマンド。CLI の役割は JSON 取得までで、要約は LLM が行う。
|
|
296
|
-
|
|
297
|
-
### 自然言語 → コマンド マッピング
|
|
298
|
-
|
|
299
|
-
以下のような依頼で発火する:
|
|
300
|
-
|
|
301
|
-
- 「伊藤T(松井T)の先週の課題とアクションプラン(を案件ごとに要約して)」
|
|
302
|
-
- 「チームの週次レビュー(を見せて/まとめて)」
|
|
303
|
-
- 「先週の課題まとめ」「先週のアクションプランまとめ」
|
|
304
|
-
|
|
305
|
-
→ 実行するコマンド(**先週がデフォルト**):
|
|
306
|
-
|
|
307
|
-
```bash
|
|
308
|
-
npx -y addashboard-cli@latest review --team 伊藤T
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
特定週を指定する場合は、その週の月曜(JST)を `--week` で渡す:
|
|
312
|
-
|
|
313
|
-
```bash
|
|
314
|
-
npx -y addashboard-cli@latest review --team 松井T --week 2026-07-13
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
- `--team` は `伊藤T` または `松井T` のいずれか(必須)
|
|
318
|
-
- `--week` 省略時は **先週の月曜(JST)** を自動採用(例: 実行日が 2026-07-23(水) なら 2026-07-13)
|
|
319
|
-
- 出力は JSON(`team` / `weekStart` / `teamProjectCount` / `reviewCount` / `reviews[]`)
|
|
320
|
-
|
|
321
|
-
### 結果の要約(LLM 側の必須整形)
|
|
322
|
-
|
|
323
|
-
`review` の JSON は **そのまま貼らない**。案件ごとに次の形で要約する:
|
|
324
|
-
|
|
325
|
-
- **案件名(clientName / platform があれば併記)**
|
|
326
|
-
- 課題: `issue` を要約
|
|
327
|
-
- 今週のアクションプラン: `thisWeekPlan` を要約
|
|
328
|
-
- 数値実績(`actualCpa` / `actualCtr` / `actualCvr` 等)があれば補足。目標(`goalCpa` 等)と併記できると良い
|
|
329
|
-
|
|
330
|
-
冒頭または末尾で **`reviewCount`(レビュー記入のあった案件数)/ `teamProjectCount`(チームの総案件数)** に触れ、「N 件中 M 件にレビュー記入あり」といった全体像を示す。`reviews` が空(`reviewCount: 0`)の場合は「該当週の週次レビュー記入はありませんでした」と伝える。
|
|
331
|
-
|
|
332
|
-
***
|
|
333
|
-
|
|
334
333
|
## 入稿プランナー(YDA / Meta 媒体切替・JSON入稿)
|
|
335
334
|
|
|
336
335
|
動画の API 入稿とは別に、**一括入稿を計画・確認する**ためのシングルHTMLツール。2026-07-16 / 07-21 定例フィードバックを反映。**2026-07-23 に CSV 書き出しを廃止し、保存・入稿受け渡しを JSON に統一**。**2026-07-30 に媒体スキーマ駆動化(`PLATFORMS` レジストリ)して Meta に対応**。
|
|
@@ -352,10 +351,10 @@ npx -y addashboard-cli@latest review --team 松井T --week 2026-07-13
|
|
|
352
351
|
| クリエイティブ形式 | 画像のみ(Card 1200 / SQ 1080 の mediaID) | **画像(imageHash)/動画(videoId + サムネ imageHash)両対応**(広告行の形式列 IMAGE / VIDEO) |
|
|
353
352
|
| 参照データ (`refs.media`) | `{card, sq}` | `{image, video, thumb}` |
|
|
354
353
|
| プロジェクト必須項目 | accountId / 目的(goal) / 配信開始日 / 入札 | accountId(`act_`) / **FBページID** / **pixelId**(`OFFSITE_CONVERSIONS`/`VALUE` 時) / CVイベント / 最適化 / 課金 / 入札戦略 / 配信開始日(配信終了日は任意) |
|
|
355
|
-
| 配信期間の指定階層 | 案件設定チップのみ(配信開始日) | **広告セット行の列 → 案件設定チップ →
|
|
354
|
+
| 配信期間の指定階層 | 案件設定チップのみ(配信開始日) | **広告セット行の列 → 案件設定チップ → 既定(翌日 05:00)** の順で解決。**時刻も指定可**(`YYYY-MM-DD [HH:mm[:ss]]`・JST) |
|
|
356
355
|
| 入札 | 最大配信 / tCPA(`MAXIMIZE_CONVERSIONS`+targetCpa) | `LOWEST_COST_WITHOUT_CAP` / `LOWEST_COST_WITH_BID_CAP` / `COST_CAP` / `LOWEST_COST_WITH_MIN_ROAS`(後2者は `bidAmount` 必須) |
|
|
357
356
|
| ターゲティング列 | 年齢 / 性別 / デバイス / 曜日時間帯 / **オーディエンス(含む・除外)** / **配置(含む・除外)** / 地域・サーチKW。**オーディエンス・配置は参照表の実IDで入稿JSONに載り、本番の配信ターゲティングに反映される**(数値IDでない値は落として警告)。**入稿JSONに載らないのは 地域 と サーチKW だけ** | 年齢(ageMin/ageMax) / 性別 / デバイス / 配置(Facebook / Instagram / Audience Network / Messenger、既定は自動配置) |
|
|
358
|
-
| 命名規則 | `{番号}{c\|s}-{見出し}L{本文}-{paramCode}` / `?ad=&creative=` | **同形式を踏襲**(形式記号は `i`(画像) / `v`(動画)
|
|
357
|
+
| 命名規則 | `{番号}{c\|s}-{見出し}L{本文}-{paramCode}` / `?ad=&creative=` | **同形式を踏襲**(形式記号は `i`(画像) / `v`(動画))。**最終URLは `{記事URL}?ad={paramCode}` のみ**(`creative=` もパス連結もしない)。paramCode は**広告行 > 広告セット**の実効値 |
|
|
359
358
|
| 手入稿の除外 | バナー(固定サイズ)は API 未対応 → `手入稿` フラグで入稿JSONから除外 | 手入稿フラグの区分は無し(未解決の広告のみ除外) |
|
|
360
359
|
| 管理画面 | `https://ads.yahoo.co.jp/manager/#/{mccId}/{accountId}/list/campaigns`(**CP詳細への直リンクは不可**) | `adsmanager.facebook.com/adsmanager/manage/campaigns?act=<数値>` |
|
|
361
360
|
|
|
@@ -559,7 +558,7 @@ npx -y addashboard-cli@latest list --platform yda --resource ads \
|
|
|
559
558
|
|
|
560
559
|
### 入稿手順(Meta)
|
|
561
560
|
|
|
562
|
-
1. **プランナーで計画**: ヘッダーの統合プルダウンで **`<案件名> Meta`** を選ぶ(`アカウント/meta/<名前>.json` 未整備なら先に上記セットアップ)。キャンペーン > 広告セット > 広告を作り、共通設定チップで FBページID / pixelId / CVイベント / 最適化 / 課金 / 入札戦略 / 配信開始日 / 配信終了日(任意・空欄なら無期限)を確定する。**配信日時は広告セット行の列でも個別に上書きできる**(優先順位: 広告セット行 > 案件設定チップ >
|
|
561
|
+
1. **プランナーで計画**: ヘッダーの統合プルダウンで **`<案件名> Meta`** を選ぶ(`アカウント/meta/<名前>.json` 未整備なら先に上記セットアップ)。キャンペーン > 広告セット > 広告を作り、共通設定チップで FBページID / pixelId / CVイベント / 最適化 / 課金 / 入札戦略 / 配信開始日 / 配信終了日(任意・空欄なら無期限)を確定する。**配信日時は広告セット行の列でも個別に上書きできる**(優先順位: 広告セット行 > 案件設定チップ > 既定=翌日05:00)。書式は `YYYY-MM-DD` または `YYYY-MM-DD HH:mm[:ss]`(**JST**)で、時刻を省くと開始は `00:00:00` / 終了は `23:59:59` になる。
|
|
563
562
|
- **既知の制約**: 解決は「行が空ならチップを継承」なので、**チップに終了日が入っているとき、特定の広告セットだけを無期限にすることはできない**。混在させたい場合はチップの終了日を空にし、期限を付けたい広告セット行だけに終了日時を入れる。
|
|
564
563
|
2. **入稿JSON書き出し**: ワンクリックで `<案件名>_Meta入稿計画_<日時>.json`(`planVersion:1`、`platform:"meta"`)を出力。`act_` 形式違反・FBページID 未入力・(`OFFSITE_CONVERSIONS`/`VALUE` 時の)pixelId 未入力・0件 は**書き出しをブロック**する。
|
|
565
564
|
3. **dry-run で一括検証**:
|
|
@@ -584,7 +583,7 @@ npx -y addashboard-cli@latest list --platform yda --resource ads \
|
|
|
584
583
|
- **入稿JSON書き出し**: 設定ダイアログなしの**ワンクリック**。参照未解決の広告は自動除外、accountId 未入力・0件なら書き出し中止(空入稿防止)。媒体別の中身:
|
|
585
584
|
- **YDA(見出し・本文の空欄許容)**: **タイトル番号 / 説明文番号は空欄でよい**(見出し・本文を使わない広告のケース)。空欄の広告はエラーにならず、`headlines` / `descriptions` は**空配列**で書き出され、backend も空を受理する。**空を許容するのはこの2フィールドのみ**(画像番号 `imageNo`・`paramCode`・principal・finalUrl は従来どおり必須)。**番号を入れたのに参照表(refs.titles / refs.descriptions)に無い場合は従来どおり「未解決」エラー**で、その広告は書き出しから除外される(別の障害なので緩めない)。Meta は従来どおり見出し・本文とも必須。
|
|
586
585
|
- **YDA**: アカウントID・目的(goal)・配信開始日は案件設定チップ、入札はキャンペーン行(tCPA→`MAXIMIZE_CONVERSIONS`+targetCpa)、ターゲティングは広告グループ行の列(日本語ラベル→API enum 自動変換)から `*_入稿計画_*.json`(planVersion:1、広告は IMAGE 形式: mediaIds/headlines/descriptions/principal)を生成。手入稿バナーも自動除外。
|
|
587
|
-
- **Meta**: 予算は広告セット行(CBO は使わない)、目的は `objective`、最適化/課金/入札戦略/pixel/CVイベント/FBページID は案件設定チップ、ターゲティング(年齢・性別・デバイス・配置)は広告セット行の列から `*_Meta入稿計画_*.json`(planVersion:1、`platform:"meta"`、`campaigns[].adSets[]`、広告は IMAGE / VIDEO)を生成。`act_` 形式違反・FBページID 未入力・pixelId 必須ケースの未入力でブロック。 **配信日時(`startTime` / `endTime`)は広告セットごとに解決される(広告セット行 > 案件設定チップ >
|
|
586
|
+
- **Meta**: 予算は広告セット行(CBO は使わない)、目的は `objective`、最適化/課金/入札戦略/pixel/CVイベント/FBページID は案件設定チップ、ターゲティング(年齢・性別・デバイス・配置)は広告セット行の列から `*_Meta入稿計画_*.json`(planVersion:1、`platform:"meta"`、`campaigns[].adSets[]`、広告は IMAGE / VIDEO)を生成。`act_` 形式違反・FBページID 未入力・pixelId 必須ケースの未入力でブロック。 **配信日時(`startTime` / `endTime`)は広告セットごとに解決される(広告セット行 > 案件設定チップ > 既定=翌日05:00)。入力は `YYYY-MM-DD [HH:mm[:ss]]`・JST 前提で、書き出し時に `+0900` 付き ISO8601 に正規化される(時刻を明示した場合は 23:59:59 に丸めずその時刻を尊重)。`startTime` は常に送り、配信終了日が空欄なら `endTime` キー自体を送らない(無期限配信)。`lifetimeBudget` 指定時に限り backend が配信開始日+30日を補完する。**
|
|
588
587
|
|
|
589
588
|
### 量産構造(媒体要件の核)
|
|
590
589
|
|
|
@@ -527,7 +527,7 @@ finalUrl = baseURL + paramCode + "?ad=" + paramCode + "&creative=" + …
|
|
|
527
527
|
<table class="g"><thead><tr><th>項目</th><th>画面上の出どころ</th><th>変換・制約</th></tr></thead><tbody>
|
|
528
528
|
<tr><td class="mono">accountId</td><td><b>案件設定「アカウントID」</b></td><td>必須。未入力だと書き出し中止</td></tr>
|
|
529
529
|
<tr><td class="mono">goal</td><td><b>案件設定「目的」</b></td><td><code>CONVERSION</code> / <code>CLICK</code> / <code>BRAND_AWARENESS</code> / <code>VIDEO_VIEW</code> / <code>VIEWABLE_IMPRESSION</code></td></tr>
|
|
530
|
-
<tr><td class="mono">startDate</td><td><b>案件設定「配信開始日時」</b>(カレンダー+時計から選択)</td><td>YYYY-MM-DD
|
|
530
|
+
<tr><td class="mono">startDate</td><td><b>案件設定「配信開始日時」</b>(カレンダー+時計から選択)</td><td>YYYY-MM-DD。空欄=<b>翌日 05:00</b>。<b>時刻は別フィールド <code>startTime</code>(HHmm)として送られる</b>(公式: ディスプレイ広告API v18 CampaignService。startTime を指定するときは startDate が必須)。日付だけを入れた場合は startTime を送らない</td></tr>
|
|
531
531
|
<tr><td class="mono">status</td><td>キャンペーン行/広告グループ行の「配信設定」</td><td><code>オン→ACTIVE</code> / <code>オフ→PAUSED</code>(既定オフ=誤配信防止)</td></tr>
|
|
532
532
|
<tr><td class="mono">budget</td><td>キャンペーン行「1日の予算」</td><td>未入力時はモード別既定(新規12,000/ASC50,000)</td></tr>
|
|
533
533
|
<tr><td class="mono">biddingStrategy</td><td>キャンペーン行「入札戦略」+ 目標CV単価</td><td><code>tCPA → MAXIMIZE_CONVERSIONS + targetCpa</code>(tCPA値はキャンペーン行→案件既定8,500の順)/ <code>最大配信 → MAXIMIZE_CONVERSIONS</code>(目標なし <span class="pill amber">要実機確認</span>)</td></tr>
|
|
@@ -540,7 +540,7 @@ finalUrl = baseURL + paramCode + "?ad=" + paramCode + "&creative=" + …
|
|
|
540
540
|
<tr><td class="mono">ads[].imagePaths</td><td>広告行「画像パス」</td><td><b>参照表に無い画像番号(未登録)のときだけ</b>送る。CLI が入稿前にアップロードして mediaId を解決する。画像番号が解決済みの行に入れても<b>送らない</b>(CLI は追加アップロードするが広告には既存 mediaId が使われるため。差し替えたいときは画像番号を空にする)</td></tr>
|
|
541
541
|
<tr><td class="mono">ads[].headlines</td><td><span class="pill purple">可変</span></td><td>タイトル番号 → 文言。<b>35字以内</b>(API上のアセット制約はタイトル≤20字・説明文≤90字)</td></tr>
|
|
542
542
|
<tr><td class="mono">ads[].descriptions</td><td><span class="pill purple">可変</span></td><td>説明文番号 → 文言</td></tr>
|
|
543
|
-
<tr><td class="mono">ads[].finalUrl</td><td>自動生成(広告行の入力項目ではない)</td><td>YDA は <code>baseURL + paramCode + "?ad=" + paramCode + "&creative=" + paramCode + "-" + 広告名</code> / Meta は <code>baseURL + "?ad=" + paramCode</code
|
|
543
|
+
<tr><td class="mono">ads[].finalUrl</td><td>自動生成(広告行の入力項目ではない)</td><td>YDA は <code>baseURL + paramCode + "?ad=" + paramCode + "&creative=" + paramCode + "-" + 広告名</code> / Meta は <code>baseURL + "?ad=" + paramCode</code>(<b>creative= もパス連結もしない</b>。paramCode は<b>広告行 > 広告セット</b>の実効値)。案件設定の <b>URLパラメータ を OFF</b> にすると <code>baseURL</code> のみ(paramCode 列は非表示になり未入力でもエラーにならない)。記事URLに既にクエリがある場合は <code>&</code> で連結する</td></tr>
|
|
544
544
|
</tbody></table>
|
|
545
545
|
<div class="callout">プランナーの保存JSON(バージョン保存)はこれとは別物で、<code>schemaVersion:2</code> の全state(meta / project / campaigns / ui / refs / submit)を保持する。<b>meta</b> = バージョンID・作成/更新日時・作成者・対象媒体・名称・メモ。旧v1 JSONも読込時に自動マイグレーションされる。</div>
|
|
546
546
|
</div></details>
|
|
@@ -638,7 +638,7 @@ finalUrl = baseURL + paramCode + "?ad=" + paramCode + "&creative=" + …
|
|
|
638
638
|
|
|
639
639
|
<details class="sec" open><summary><span class="num">5</span><span class="stitle">未確定事項・未対応</span><span class="chev"></span></summary>
|
|
640
640
|
<div class="body">
|
|
641
|
-
<p class="lead">命名規則は <b>YDA 踏襲で確定</b>(<code>{番号}{i|v}-{見出し}L{本文}-{paramCode}</code>
|
|
641
|
+
<p class="lead">命名規則は <b>YDA 踏襲で確定</b>(<code>{番号}{i|v}-{見出し}L{本文}-{paramCode}</code>)。<b>最終URLは <code>{記事URL}?ad={paramCode}</code> のみ</b>(YDA と違い <code>creative=</code> もパス連結もしない)。<b>paramCode は広告セット行が既定値・広告行が上書き</b>(広告行が空欄なら広告セットの値を継承する)。以下が残っている。</p>
|
|
642
642
|
<ul>
|
|
643
643
|
<li>Meta広告フィードバックの所在と最終確認者(タスク確認事項より・未回答)。</li>
|
|
644
644
|
<li>クリエイティブ検証の単位(YDAの「1キャンペーン=1変数」に相当する実験設計)。</li>
|
|
@@ -783,6 +783,13 @@ const uid = p => p + '_' + (Date.now().toString(36)) + (_uc++).toString(36);
|
|
|
783
783
|
const esc = s => String(s==null?'':s).replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
|
|
784
784
|
const glen = s => [...String(s==null?'':s)].length;
|
|
785
785
|
const today = () => { const d=new Date(); return d.getFullYear()+'-'+String(d.getMonth()+1).padStart(2,'0')+'-'+String(d.getDate()).padStart(2,'0'); };
|
|
786
|
+
/* 配信開始日時の既定 = 翌日 05:00 (JST)。当日配信は審査が間に合わず意図しない時間に出るため。
|
|
787
|
+
YDA も Meta も 05:00 が効く: YDA は startDate(yyyyMMdd) + **startTime(HHmm)** の2フィールドに分けて送る
|
|
788
|
+
(公式: ディスプレイ広告API v18 CampaignService。startTime を送るときは startDate が必須)。 */
|
|
789
|
+
const DEFAULT_START_TIME = '05:00';
|
|
790
|
+
const defaultStart = () => { const d=new Date(); d.setDate(d.getDate()+1); return d.getFullYear()+'-'+String(d.getMonth()+1).padStart(2,'0')+'-'+String(d.getDate()).padStart(2,'0'); };
|
|
791
|
+
const defaultStartDateTime = () => defaultStart()+' '+DEFAULT_START_TIME;
|
|
792
|
+
const defaultStartIso = () => defaultStart()+'T'+DEFAULT_START_TIME+':00+0900';
|
|
786
793
|
/* S12: 日時文字列 "YYYY-MM-DD[ HH:mm[:ss]]" ⇄ {date, time} の相互変換。
|
|
787
794
|
kind:'datetime' チップ (日付ピッカー + 時刻ピッカー) と state の1本文字列を橋渡しする。
|
|
788
795
|
・秒は input[type=time] の既定表示に合わせて分までに丸める (秒付きの旧データも壊さず読める)
|
|
@@ -796,8 +803,11 @@ const joinDateTime = (date, time) => {
|
|
|
796
803
|
const d=String(date||'').trim(); if(!d) return '';
|
|
797
804
|
const t=String(time||'').trim(); return t ? d+' '+t : d;
|
|
798
805
|
};
|
|
799
|
-
/* 入稿ボディ用: 日時文字列から日付部分だけを取り出す (YDA の startDate
|
|
806
|
+
/* 入稿ボディ用: 日時文字列から日付部分だけを取り出す (YDA の startDate は yyyyMMdd 相当の日付のみ) */
|
|
800
807
|
const dateOnly = v => splitDateTime(v).date;
|
|
808
|
+
/* 入稿ボディ用: 時刻部分を YDA の startTime フォーマット **HHmm** にする。
|
|
809
|
+
時刻が無ければ '' を返し、呼び出し側で startTime キー自体を出さない (媒体既定のまま)。 */
|
|
810
|
+
const timeHHmm = v => { const t=splitDateTime(v).time; return t ? t.replace(':','') : ''; };
|
|
801
811
|
/* 引数を左から順に見て「trim して空文字でない最初の値」を返す。優先順位を1行で書くための道具。 */
|
|
802
812
|
const firstNonEmpty = (...vs) => { for(const v of vs){ const s=String(v==null?'':v).trim(); if(s!=='') return s; } return ''; };
|
|
803
813
|
/* URLのクエリ値に埋める文字列のエスケープ (媒体非依存のURLユーティリティ)。
|
|
@@ -1129,7 +1139,8 @@ PLATFORMS.yda = {
|
|
|
1129
1139
|
時刻は運用メモとして state / 保存JSON にだけ残り、入稿ボディへは日付部分だけを送る (buildPlan.campaign)。 */
|
|
1130
1140
|
{key:'startDate', label:'配信開始日時', kind:'datetime', fallback:'',
|
|
1131
1141
|
title:'配信開始日時(JST)。日付はカレンダー、時刻は時計から選べます。\n'
|
|
1132
|
-
+'
|
|
1142
|
+
+'空欄なら翌日 05:00 が既定です。日付は startDate、時刻は startTime(HHmm)として入稿されます。\n'
|
|
1143
|
+
+'日付だけを入れた場合は時刻を送らず、媒体側の既定(0時)から配信されます。'},
|
|
1133
1144
|
{key:'cta', label:'CTA', kind:'text', width:'7ch'},
|
|
1134
1145
|
{key:'deliveryStatus', label:'配信', kind:'select', options:['オフ','オン']},
|
|
1135
1146
|
/* S14: フリークエンシー(viewableFrequencyCap)の案件既定。
|
|
@@ -1350,8 +1361,8 @@ PLATFORMS.yda = {
|
|
|
1350
1361
|
|
|
1351
1362
|
/* ---- S8: 入稿計画JSON (SubmitPlanFile) の3階層ボディ生成 ---- */
|
|
1352
1363
|
/* S13: 案件設定の書き出し前ガード。
|
|
1353
|
-
startDate
|
|
1354
|
-
|
|
1364
|
+
startDate は空欄なら翌日にフォールバックする仕様だが、「読めない書式」まで空と同じ扱いにすると
|
|
1365
|
+
入力した日付が黙って翌日にすり替わる。GUI (日付/時刻ピッカー) からは不正値は入らないので、
|
|
1355
1366
|
ここに来るのは旧保存JSONの読み込みか手編集だけ。その場合は書き出しを止めて気づけるようにする。 */
|
|
1356
1367
|
validateProject(p){
|
|
1357
1368
|
const s=String((p&&p.startDate)||'').trim();
|
|
@@ -1369,12 +1380,17 @@ PLATFORMS.yda = {
|
|
|
1369
1380
|
name:c.name,
|
|
1370
1381
|
goal:p.goal||'CONVERSION',
|
|
1371
1382
|
status:P.mappers.status(p.deliveryStatus, P), // E-2: キャンペーンstatus列は撤去 → 案件設定の配信値を使用
|
|
1372
|
-
/* S12:
|
|
1373
|
-
|
|
1383
|
+
/* S12/I-YDA-TIME: Yahoo Ads API は startDate(yyyyMMdd 相当) と startTime(HHmm) の2フィールド。
|
|
1384
|
+
日付と時刻を分けて送る (公式: startTime を指定するときは startDate が必須)。 */
|
|
1385
|
+
startDate:dateOnly(p.startDate)||defaultStart(), /* 既定は翌日 */
|
|
1374
1386
|
budget:Number(c.budget)||0, // A-1: キャンペーン個別値のみ
|
|
1375
1387
|
biddingStrategy,
|
|
1376
1388
|
adGroups:[]
|
|
1377
1389
|
};
|
|
1390
|
+
/* 開始時刻 (HHmm)。案件設定が時刻を持たないときは既定 05:00 を使う。
|
|
1391
|
+
空欄になるのは「日付だけを明示的に入れた」ケースなので、そのときは startTime を送らない。 */
|
|
1392
|
+
const stTime = p.startDate ? timeHHmm(p.startDate) : timeHHmm(defaultStartDateTime());
|
|
1393
|
+
if(stTime) cp.startTime=stTime;
|
|
1378
1394
|
/* S14: フリークエンシー (viewableFrequencyCap)。OFF / 回数未入力なら **キー自体を出さない**
|
|
1379
1395
|
(backend の campaignSchema では全て optional。付けない = 媒体既定のまま) */
|
|
1380
1396
|
/* S14: 'default' は案件共通設定を引き、'off' は付けない。小数はここまでに落ちている
|
|
@@ -2501,11 +2517,13 @@ const META_COLS = {
|
|
|
2501
2517
|
width:'6ch', sequenceable:true, errCodes:[EC.DESC_UNRESOLVED, EC.DESC_TOO_LONG],
|
|
2502
2518
|
ghostKey:'desc', ddTitle:'メインテキスト一覧から選択', ghostTitle:r=>r.descText,
|
|
2503
2519
|
ghost:r=>r.errCodes.includes(EC.DESC_UNRESOLVED)?'<span class="err">— 未解決</span>':esc(r.descText.slice(0,44))},
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2520
|
+
/* I-150: 広告ごとに個別設定できる。空欄なら広告セット行の値を継承 (薄字で継承元を表示)。
|
|
2521
|
+
⚠ scope:'parentGroup' を付けない。付けると広告セット行の値を書き換えてしまう。 */
|
|
2522
|
+
{field:'paramCode', label:'paramCode', kind:'mono', width:'120px',
|
|
2523
|
+
sequenceable:true, errCodes:[EC.PARAM_CODE_EMPTY],
|
|
2524
|
+
title:'空欄なら広告セットの paramCode を継承。入力するとこの広告だけ上書きする。最終URLは 記事URL?ad={paramCode}',
|
|
2507
2525
|
hidden:p=>urlParamsOff(p),
|
|
2508
|
-
|
|
2526
|
+
placeholder:ctx=>(ctx.r?ctx.r.groupParamCode:'')},
|
|
2509
2527
|
/* C8: 記事slug / 記事URL(上書き) 列は廃止。最終URL = 記事URL + ?ad={paramCode} の導出セル */
|
|
2510
2528
|
{field:'finalUrl', label:'最終リンク先URL', kind:'mono', width:'240px',
|
|
2511
2529
|
alwaysReadonly:true, roStyle:'input',
|
|
@@ -2513,7 +2531,7 @@ const META_COLS = {
|
|
|
2513
2531
|
get:(row,ctx)=>ctx.r?ctx.r.finalUrl:''},
|
|
2514
2532
|
/* C6: 広告名は自由入力 (空 = 自動生成)。YDA と同じ規約 */
|
|
2515
2533
|
{field:'adName', label:'広告名', kind:'mono', width:'170px',
|
|
2516
|
-
title:'空欄なら自動生成({番号}{i|v}-{見出し番号}L{本文番号}-{paramCode}
|
|
2534
|
+
title:'空欄なら自動生成({番号}{i|v}-{見出し番号}L{本文番号}-{paramCode})。Meta の最終リンク先URLは 記事URL?ad={paramCode} だけで決まるので、広告名を手入力してもURLは変わりません',
|
|
2517
2535
|
placeholder:ctx=>ctx.r?ctx.r.autoAdName:''},
|
|
2518
2536
|
{field:'adGroupId', label:'CP / AdSet ID', kind:'derived',
|
|
2519
2537
|
derive:(a,ctx)=>'<span class="idpill '+(ctx.r.resolvedGroup?'':'warn')+'" data-d="'+a.uid+'-ids">'+esc(ctx.r.adGroupId?('AS '+ctx.r.adGroupId):'新規')+'</span>'}
|
|
@@ -2524,7 +2542,7 @@ const META_COLS = {
|
|
|
2524
2542
|
readonlyOnExisting:true, roTitle:'既存広告セットのため編集不可'},
|
|
2525
2543
|
{field:'paramCode', label:'paramCode', kind:'mono', width:'120px', required:true,
|
|
2526
2544
|
sequenceable:true, readonlyOnExisting:true, hidden:p=>urlParamsOff(p),
|
|
2527
|
-
title:'URL
|
|
2545
|
+
title:'URL生成用のパラメータ(広告セット紐づけには不使用)。この広告セット配下の広告の既定値で、広告行に入力があればそちらが優先される。最終URLは 記事URL?ad={paramCode}'},
|
|
2528
2546
|
/* budgetLevel='adGroup' → 予算は広告セット行が持つ (CBO は使わない) */
|
|
2529
2547
|
{field:'dailyBudget', label:'日予算(円)', kind:'number', width:'84px', required:true,
|
|
2530
2548
|
coerce:numOrNull, readonlyOnExisting:true, roEmptyDash:true, errCodes:[EC.BUDGET_MISSING],
|
|
@@ -2551,9 +2569,9 @@ const META_COLS = {
|
|
|
2551
2569
|
readonlyOnExisting:true, roEmptyDash:true, coerce:v=>String(v==null?'':v).trim(),
|
|
2552
2570
|
errCodes:[EC.START_TIME_INVALID, EC.END_BEFORE_START],
|
|
2553
2571
|
placeholder:()=>{ const v=String((st.project&&st.project.startDate)||'').trim();
|
|
2554
|
-
return v!=='' ? v : '案件設定 /
|
|
2572
|
+
return v!=='' ? v : '案件設定 / 翌日05:00'; },
|
|
2555
2573
|
title:'この広告セットだけの配信開始日時(JST)。空欄なら案件設定「配信開始日時」を継承し、'
|
|
2556
|
-
+'
|
|
2574
|
+
+'それも空欄なら翌日 05:00。日付のみなら 00:00 開始(例 2026-08-01 10:30)。'
|
|
2557
2575
|
+'末尾に +09:00 / Z などのオフセットを書いた場合はそのまま採用される(JST 補完なし)。'},
|
|
2558
2576
|
{field:'endDate', label:'配信終了日時', kind:'datetime', width:'17ch',
|
|
2559
2577
|
readonlyOnExisting:true, roEmptyDash:true, coerce:v=>String(v==null?'':v).trim(),
|
|
@@ -2655,7 +2673,7 @@ PLATFORMS.meta = {
|
|
|
2655
2673
|
{key:'startDate', label:'配信開始日時', kind:'datetime', fallback:'',
|
|
2656
2674
|
title:'案件の既定値(広告セット行が空のときに使う)。すべて JST。'
|
|
2657
2675
|
+'日付のみなら 00:00 開始。時刻を入れるとその時刻ちょうどから配信(例 2026-08-01 10:30)。'
|
|
2658
|
-
+'
|
|
2676
|
+
+'空欄なら翌日 05:00 から。末尾に +09:00 / Z などのオフセットを書いた場合はそのまま採用される。'},
|
|
2659
2677
|
{key:'endDate', label:'配信終了日時', kind:'datetime', fallback:'',
|
|
2660
2678
|
title:'案件の既定値(広告セット行が空のときに使う)。すべて JST。'
|
|
2661
2679
|
+'日付のみならその日の 23:59:59 まで。時刻を入れるとその時刻で終了(例 2026-08-31 18:00)。'
|
|
@@ -2789,7 +2807,7 @@ PLATFORMS.meta = {
|
|
|
2789
2807
|
startTime(dateStr){
|
|
2790
2808
|
const r=PLATFORMS.meta.mappers.normDateTime(dateStr);
|
|
2791
2809
|
if(r && typeof r==='object') return String(r.input); /* 不正はそのまま返し検証側で弾く */
|
|
2792
|
-
return r || (
|
|
2810
|
+
return r || defaultStartIso();
|
|
2793
2811
|
},
|
|
2794
2812
|
/* 終了日は「その日の終わりまで配信」の解釈。日付のみの入力を JST 23:59:59 に寄せる。
|
|
2795
2813
|
空欄なら null を返し、呼び出し側で endTime キー自体を出さない (無期限配信)。 */
|
|
@@ -2809,7 +2827,8 @@ PLATFORMS.meta = {
|
|
|
2809
2827
|
deliveryStatus:'オフ', startDate:'', endDate:''
|
|
2810
2828
|
},
|
|
2811
2829
|
/* C6: adName は空 = 自動生成 (naming.adName) */
|
|
2812
|
-
|
|
2830
|
+
/* I-150: paramCode は空 = 広告セットの値を継承 (広告ごとに入力すると上書き) */
|
|
2831
|
+
ad:{format:'IMAGE', imageNo:'', titleNo:'', descNo:'', adName:'', paramCode:''},
|
|
2813
2832
|
adGroup:{name:'', paramCode:'', isExisting:false, dailyBudget:1000, bidAmount:null,
|
|
2814
2833
|
ageMin:18, ageMax:65, tg_gender:'すべて', tg_device:'すべてのデバイス',
|
|
2815
2834
|
tg_placement:'自動配置', startDate:'', endDate:'', deliveryStatus:''},
|
|
@@ -2832,6 +2851,14 @@ PLATFORMS.meta = {
|
|
|
2832
2851
|
isExisting:true, ads:[P.factories.newAd()]}); }
|
|
2833
2852
|
},
|
|
2834
2853
|
|
|
2854
|
+
/* I-150: Meta の paramCode は「広告セットが既定値・広告行が上書き」の2層。
|
|
2855
|
+
広告行の paramCode が空 (=未入力) のときだけ広告セットの値を継承する。
|
|
2856
|
+
⚠ 広告名・最終URL・検証はすべてこの実効値を見る。group.paramCode を直接読まない。 */
|
|
2857
|
+
paramCodeOf(ad, group){
|
|
2858
|
+
const own=String((ad&&ad.paramCode)||'').trim();
|
|
2859
|
+
return own || String((group&&group.paramCode)||'');
|
|
2860
|
+
},
|
|
2861
|
+
|
|
2835
2862
|
/* 命名規則は YDA 踏襲 (形式記号は mediaFormats.crSuffix = i/v) */
|
|
2836
2863
|
naming:{
|
|
2837
2864
|
crName(ad, P){ return String(ad.imageNo||'') + P.fmtOf(ad).crSuffix; },
|
|
@@ -2839,15 +2866,16 @@ PLATFORMS.meta = {
|
|
|
2839
2866
|
adName(ad, group, crName, project){
|
|
2840
2867
|
const head = crName + '-' + (ad.titleNo??'') + 'L' + (ad.descNo??'');
|
|
2841
2868
|
if(project && project.urlParams===false) return head;
|
|
2842
|
-
return head + '-' + (group
|
|
2869
|
+
return head + '-' + PLATFORMS.meta.paramCodeOf(ad, group);
|
|
2843
2870
|
},
|
|
2844
2871
|
/* C8: Meta の最終URL = {記事URL}?ad={paramCode} のみ (YDA と違い creative= もパス連結もしない)。
|
|
2845
|
-
urlParams===false なら記事URLのみ。base が既にクエリを持つときは '&' で繋ぐ。
|
|
2872
|
+
urlParams===false なら記事URLのみ。base が既にクエリを持つときは '&' で繋ぐ。
|
|
2873
|
+
I-150: paramCode は広告行 > 広告セット の実効値。 */
|
|
2846
2874
|
finalUrl(ad, group, adName, project){
|
|
2847
2875
|
const base = (project.baseArticleUrl||'');
|
|
2848
2876
|
if(project.urlParams===false) return base;
|
|
2849
2877
|
const sep = base.indexOf('?')>=0 ? '&' : '?';
|
|
2850
|
-
return base + sep + 'ad=' + urlq(group
|
|
2878
|
+
return base + sep + 'ad=' + urlq(PLATFORMS.meta.paramCodeOf(ad, group));
|
|
2851
2879
|
},
|
|
2852
2880
|
campaignName(urlNumber, firstAd, P){
|
|
2853
2881
|
const cr = firstAd ? (String(firstAd.imageNo||'CR') + P.fmtOf(firstAd).crSuffix) : 'CR';
|
|
@@ -2875,6 +2903,8 @@ PLATFORMS.meta = {
|
|
|
2875
2903
|
const P=PLATFORMS.meta, p=ctx.project, refs=ctx.refs;
|
|
2876
2904
|
const fmt=P.fmtOf(ad);
|
|
2877
2905
|
const crName=P.naming.crName(ad, P);
|
|
2906
|
+
/* I-150: 実効 paramCode (広告行 > 広告セット)。表示・検証はこれを見る */
|
|
2907
|
+
const paramCode=P.paramCodeOf(ad, group).trim();
|
|
2878
2908
|
/* C6: 広告名は自由入力。空 = 自動生成にフォールバック */
|
|
2879
2909
|
const autoAdName=P.naming.adName(ad, group, crName, p);
|
|
2880
2910
|
const adName=String(ad.adName||'').trim() || autoAdName;
|
|
@@ -2899,11 +2929,12 @@ PLATFORMS.meta = {
|
|
|
2899
2929
|
else if(titleText!==undefined && glen(titleText)>T.warn) pushWarn('見出し'+T.warn+'字超', EC.TITLE_LONG_WARN);
|
|
2900
2930
|
if(descText!==undefined && glen(descText)>D.err) pushErr('本文'+D.err+'字超', EC.DESC_TOO_LONG);
|
|
2901
2931
|
else if(descText!==undefined && glen(descText)>D.warn) pushWarn('本文'+D.warn+'字超', EC.DESC_LONG_WARN);
|
|
2902
|
-
/* C8: URLパラメータ OFF の案件では paramCode 自体が不要 (列も隠す) のでエラーにしない
|
|
2903
|
-
|
|
2932
|
+
/* C8: URLパラメータ OFF の案件では paramCode 自体が不要 (列も隠す) のでエラーにしない
|
|
2933
|
+
I-150: 広告行・広告セットの **どちらにも無い** ときだけエラー */
|
|
2934
|
+
if(p.urlParams!==false && paramCode==='') pushErr('paramCode未入力', EC.PARAM_CODE_EMPTY);
|
|
2904
2935
|
if(pendingImage) pushWarn(ad.format==='VIDEO'?'動画未登録(要アップロード)':'画像未登録(要アップロード)', EC.MEDIA_MISSING);
|
|
2905
2936
|
const aid=String(group.adGroupId||'').trim();
|
|
2906
|
-
return {crName, adName, autoAdName, campaignId:'', adGroupId:aid, mediaKind:fmt.apiMediaKind, imageNo:noStr,
|
|
2937
|
+
return {crName, adName, autoAdName, paramCode, groupParamCode:String(group.paramCode||''), campaignId:'', adGroupId:aid, mediaKind:fmt.apiMediaKind, imageNo:noStr,
|
|
2907
2938
|
mediaId:mediaId||'', thumbHash:thumbHash||'', pendingImage,
|
|
2908
2939
|
titleText:titleText===undefined?'':titleText, descText:descText===undefined?'':descText,
|
|
2909
2940
|
finalUrl, errs, warns, errCodes, warnCodes, resolvedGroup:!!aid};
|
|
@@ -2924,7 +2955,7 @@ PLATFORMS.meta = {
|
|
|
2924
2955
|
if(sBad) errCodes.push(EC.START_TIME_INVALID);
|
|
2925
2956
|
if(eBad) errCodes.push(EC.END_TIME_INVALID);
|
|
2926
2957
|
if(!sBad && !eBad){
|
|
2927
|
-
const s=M.epochOf(firstNonEmpty(sRaw, p.startDate) ||
|
|
2958
|
+
const s=M.epochOf(firstNonEmpty(sRaw, p.startDate) || defaultStart());
|
|
2928
2959
|
const e=M.epochOf(firstNonEmpty(eRaw, p.endDate), {endOfDay:true}); /* 日付のみの終了は 23:59:59 で比較 */
|
|
2929
2960
|
if(!isNaN(s) && !isNaN(e) && e<s) errCodes.push(EC.END_BEFORE_START);
|
|
2930
2961
|
}
|
|
@@ -2945,7 +2976,7 @@ PLATFORMS.meta = {
|
|
|
2945
2976
|
if(psBad) errs.push({code:EC.START_TIME_INVALID, msg:'案件設定「配信開始日時」の書式が不正です(例 2026-08-01 10:30): '+ps});
|
|
2946
2977
|
if(peBad) errs.push({code:EC.END_TIME_INVALID, msg:'案件設定「配信終了日時」の書式が不正です(例 2026-08-31 23:59): '+pe});
|
|
2947
2978
|
if(!psBad && !peBad){
|
|
2948
|
-
const s=M.epochOf(ps||
|
|
2979
|
+
const s=M.epochOf(ps||defaultStart()), e=M.epochOf(pe, {endOfDay:true}); /* 日付のみの終了は 23:59:59 で比較 */
|
|
2949
2980
|
if(!isNaN(s) && !isNaN(e) && e<s) errs.push({code:EC.END_BEFORE_START, msg:'案件設定の配信終了日時が配信開始日時より前です'});
|
|
2950
2981
|
}
|
|
2951
2982
|
/* 広告セット行の配信日時 (日予算・入札の未入力は従来どおり行除外で扱い、ここでは見ない) */
|
|
@@ -2996,7 +3027,7 @@ PLATFORMS.meta = {
|
|
|
2996
3027
|
billingEvent:p.billingEvent||'IMPRESSIONS',
|
|
2997
3028
|
bidStrategy:p.bidStrategy||'LOWEST_COST_WITHOUT_CAP',
|
|
2998
3029
|
dailyBudget:Number(g.dailyBudget)||0, /* JPY はそのまま (currency_offset=1) */
|
|
2999
|
-
startTime:P.mappers.startTime(startSrc), /* 常に送る (
|
|
3030
|
+
startTime:P.mappers.startTime(startSrc), /* 常に送る (空なら翌日05:00)。JST 明示 ISO8601 */
|
|
3000
3031
|
/* 特別カテゴリ時は 18-65 固定・性別指定不可 (公式制約) */
|
|
3001
3032
|
ageMin: constrained?K.forcedAgeMin:(Number(g.ageMin)||18),
|
|
3002
3033
|
/* 年齢上限は空欄 = 上限なし → ageMax キー自体を出さない (age_max 省略 = Meta 側で上限なし)。
|
|
@@ -3104,6 +3135,7 @@ PLATFORMS.meta = {
|
|
|
3104
3135
|
' - 保存先: .claude/skills/ad-ops/サンプルプラン_meta.json',
|
|
3105
3136
|
' - フォーマット: {"schemaVersion":'+SCHEMA_VERSION+', "platform":"meta", "accountId":"act_<対象アカウントID>", "campaigns":[ ... ]}',
|
|
3106
3137
|
' - campaigns には キャンペーン → 広告セット(paramCode / dailyBudget / 年齢 / 性別 / 配置) → 広告(形式 IMAGE|VIDEO / クリエイティブ番号 / 見出し番号 / 本文番号) の構成を入れてください。',
|
|
3138
|
+
' 広告セットの paramCode は配下の広告の既定値です。広告ごとに変えたいときだけ広告側に paramCode を書いてください(空欄なら継承)。',
|
|
3107
3139
|
'3. 書き出したら、プランナーを開き直す(またはリロードして媒体を Meta に切り替える)と内容が自動で表示されます。'].join('\n');
|
|
3108
3140
|
},
|
|
3109
3141
|
submitHelp(ctx){
|
|
@@ -3274,7 +3306,7 @@ function pasteGrid(txt){
|
|
|
3274
3306
|
function dupSelected(){
|
|
3275
3307
|
const rg=selRange(); if(!rg){ toast('複製する行を選択してください'); return; } const vis=flatVisible(); const items=[]; for(let r=rg.r0;r<=rg.r1;r++){ if(vis[r]) items.push(vis[r]); } if(!items.length){ toast('対象なし'); return; }
|
|
3276
3308
|
mutate(()=>{ items.forEach(it=>{
|
|
3277
|
-
if(it.kind==='g'){ const ng=JSON.parse(JSON.stringify(it.g)); ng.uid=uid('g'); ng.adGroupId=''; ng.isExisting=false; ng.name=dupGroupName(it.g.name); ng.paramCode=nextParamCode(it.g.paramCode); ng.ads.forEach(a=>a.uid=uid('a')); const idx=it.c.adGroups.indexOf(it.g); it.c.adGroups.splice(idx+1,0,ng); autoResolveGroupIds(ng, it.c); }
|
|
3309
|
+
if(it.kind==='g'){ const ng=JSON.parse(JSON.stringify(it.g)); ng.uid=uid('g'); ng.adGroupId=''; ng.isExisting=false; ng.name=dupGroupName(it.g.name); ng.paramCode=nextParamCode(it.g.paramCode); ng.ads.forEach(a=>{ a.uid=uid('a'); }); const idx=it.c.adGroups.indexOf(it.g); it.c.adGroups.splice(idx+1,0,ng); ng.ads.forEach(renumberAdParamCode); autoResolveGroupIds(ng, it.c); }
|
|
3278
3310
|
else if(it.kind==='c'){ const nc=cloneCampaign(it.c,false,false); const idx=st.campaigns.indexOf(it.c); st.campaigns.splice(idx+1,0,nc); }
|
|
3279
3311
|
else { const idx=it.g.ads.indexOf(it.a); it.g.ads.splice(idx+1,0,cloneAd(it.a,null)); }
|
|
3280
3312
|
}); }); clearSel(); toast(items.length+'件を複製');
|
|
@@ -3749,12 +3781,32 @@ function dupGroup(u){
|
|
|
3749
3781
|
ng.uid=uid('g'); ng.adGroupId=''; ng.isExisting=false;
|
|
3750
3782
|
ng.name=dupGroupName(r.g.name);
|
|
3751
3783
|
ng.paramCode=nextParamCode(r.g.paramCode);
|
|
3784
|
+
/* I-150: 広告行に明示指定された paramCode をそのままコピーすると、同じ最終URLの広告が
|
|
3785
|
+
量産される。広告セットと同じ規則で振り直す (空欄=継承 の行は空欄のまま)。 */
|
|
3752
3786
|
ng.ads=r.g.ads.map(a=>cloneAd(a, null));
|
|
3753
3787
|
r.c.adGroups.splice(r.i+1,0,ng);
|
|
3788
|
+
/* 採番はプランへ挿入した後に行う。maxParamNum はプラン全体を走査するので、
|
|
3789
|
+
先に振ると同じ広告セット内の広告が全部同じ番号になる。 */
|
|
3790
|
+
ng.ads.forEach(renumberAdParamCode);
|
|
3754
3791
|
autoResolveGroupIds(ng, r.c);
|
|
3755
3792
|
});
|
|
3756
3793
|
toast('複製しました');
|
|
3757
3794
|
}
|
|
3795
|
+
/* I-150: prefix ごとの連番プール (nextByPrefix) から次の paramCode を採る。
|
|
3796
|
+
末尾数字が無い / 空欄 (=継承) のときは null を返し、呼び出し側で「触らない」を選ばせる。 */
|
|
3797
|
+
function seqParamCode(code, nextByPrefix){
|
|
3798
|
+
const m=String(code||'').match(/^(.*?)(\d+)\s*$/); if(!m) return null;
|
|
3799
|
+
const prefix=m[1], width=m[2].length;
|
|
3800
|
+
if(nextByPrefix[prefix]==null) nextByPrefix[prefix]=maxParamNum(prefix)+1;
|
|
3801
|
+
return prefix+String(nextByPrefix[prefix]++).padStart(width,'0');
|
|
3802
|
+
}
|
|
3803
|
+
/* I-150: 広告行が個別に持つ paramCode を複製時に振り直す。空欄 (=広告セット継承) は触らない。 */
|
|
3804
|
+
function renumberAdParamCode(ad){
|
|
3805
|
+
if(!ad) return;
|
|
3806
|
+
const own=String(ad.paramCode||'').trim();
|
|
3807
|
+
if(own==='') return;
|
|
3808
|
+
ad.paramCode=nextParamCode(own);
|
|
3809
|
+
}
|
|
3758
3810
|
/* paramCode の末尾数字を「プラン内 + 参照表の最大 +1」に振り直す。数字が無い / 空なら元の値のまま。 */
|
|
3759
3811
|
function nextParamCode(code){
|
|
3760
3812
|
const m=String(code||'').match(/^(.*?)(\d+)\s*$/); if(!m) return code||'';
|
|
@@ -3797,13 +3849,16 @@ function editCampaign(u){
|
|
|
3797
3849
|
function cloneCampaign(c, clearCreative, clearParam){
|
|
3798
3850
|
const nc=JSON.parse(JSON.stringify(c)); nc.uid=uid('c');
|
|
3799
3851
|
nc.campaignId=''; nc.isExisting=false; // B7/F-2: 複製はIDを引き継がず必ず新規扱い(編集可)
|
|
3800
|
-
|
|
3852
|
+
/* I-150: 広告行も個別 paramCode を持つので clearParam の対象に含める */
|
|
3853
|
+
nc.adGroups.forEach(g=>{ g.uid=uid('g'); g.adGroupId=''; g.isExisting=false; if(clearParam) g.paramCode=''; g.ads.forEach(a=>{ a.uid=uid('a'); if(clearParam) a.paramCode=''; if(clearCreative) pf().creativeFields.forEach(f=>{ a[f]=''; }); }); });
|
|
3801
3854
|
return nc;
|
|
3802
3855
|
}
|
|
3803
3856
|
/* 指定prefixを持つ paramCode の現在の最大末尾番号 (プラン内 + アカウントJSON refs.groups を走査) */
|
|
3804
3857
|
function maxParamNum(prefix){
|
|
3805
3858
|
let mx=0; const scan=code=>{ const m=String(code||'').match(/^(.*?)(\d+)\s*$/); if(m && m[1]===prefix){ const n=parseInt(m[2],10); if(n>mx) mx=n; } };
|
|
3806
|
-
|
|
3859
|
+
/* I-150: Meta は広告行が個別の paramCode を持てるので、広告行も走査対象に含める
|
|
3860
|
+
(含めないと複製時の採番が広告行の番号とぶつかる) */
|
|
3861
|
+
st.campaigns.forEach(c=>c.adGroups.forEach(g=>{ scan(g.paramCode); (g.ads||[]).forEach(a=>scan(a.paramCode)); }));
|
|
3807
3862
|
Object.keys(st.refs.groups||{}).forEach(scan);
|
|
3808
3863
|
return mx;
|
|
3809
3864
|
}
|
|
@@ -3827,7 +3882,9 @@ function dupCampaign(u){
|
|
|
3827
3882
|
for(let i=0;i<n;i++){
|
|
3828
3883
|
const nc=cloneCampaign(c, false, false); // 中身そのまま (creative/paramCode保持) + campaignId/adGroupIdクリア
|
|
3829
3884
|
// paramCode 連番自動採番 (prefixごとに現状の最大+1から連番)
|
|
3830
|
-
|
|
3885
|
+
/* I-150: 広告行が個別に持つ paramCode も同じ連番プールで採番する (空欄=継承 は触らない) */
|
|
3886
|
+
nc.adGroups.forEach(g=>{ const ng=seqParamCode(g.paramCode, nextByPrefix); if(ng!==null){ g.paramCode=ng; autoResolveGroupIds(g,nc); }
|
|
3887
|
+
g.ads.forEach(a=>{ const na=seqParamCode(a.paramCode, nextByPrefix); if(na!==null) a.paramCode=na; }); });
|
|
3831
3888
|
// キャンペーン名は複製元を引き継ぐ (先頭の番号のみ新しい urlNumber に差し替え / 空なら自動生成)
|
|
3832
3889
|
const num=String(startNum+i).padStart(2,'0'); nc.urlNumber=num; const f=nc.adGroups[0]&&nc.adGroups[0].ads[0]; nc.name=dupCampaignName(c.name, num, f);
|
|
3833
3890
|
st.campaigns.splice(base+1+i,0,nc);
|