@erdoai/cli 0.144.0 → 0.145.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.
- package/dist/index.js +52 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -275,6 +275,17 @@ var ErdoClient = class {
|
|
|
275
275
|
input
|
|
276
276
|
);
|
|
277
277
|
}
|
|
278
|
+
listPaidMediaCampaigns(customerId) {
|
|
279
|
+
const query = customerId ? `?customer_id=${encodeURIComponent(customerId)}` : "";
|
|
280
|
+
return this.request("GET", `/v1/paid-media/campaigns${query}`);
|
|
281
|
+
}
|
|
282
|
+
setPaidMediaCampaignConversionGoals(campaignId, input) {
|
|
283
|
+
return this.request(
|
|
284
|
+
"POST",
|
|
285
|
+
`/v1/paid-media/campaigns/${encodeURIComponent(campaignId)}/conversion-goals`,
|
|
286
|
+
input
|
|
287
|
+
);
|
|
288
|
+
}
|
|
278
289
|
announceOrgOnce(method) {
|
|
279
290
|
if (announcedOrg) return;
|
|
280
291
|
if (method.toUpperCase() === "GET") return;
|
|
@@ -2706,6 +2717,47 @@ program.command(REFRESH_COMMAND, { hidden: true }).description("Internal: refres
|
|
|
2706
2717
|
await refreshVersionCache();
|
|
2707
2718
|
});
|
|
2708
2719
|
var paidMedia = program.command("paid-media").description("Paid media setup and operations");
|
|
2720
|
+
var paidMediaCampaigns = paidMedia.command("campaigns").description("Google Ads campaigns and their conversion goals");
|
|
2721
|
+
paidMediaCampaigns.command("list").description("List the organization's owned Google Ads campaigns and owned conversion actions").option("--customer-id <id>", "Google Ads customer id (defaults to the selected account)").option("--json", "print the raw JSON result").action(async (opts) => {
|
|
2722
|
+
try {
|
|
2723
|
+
const result = await new ErdoClient().listPaidMediaCampaigns(opts.customerId);
|
|
2724
|
+
if (opts.json) {
|
|
2725
|
+
print(result);
|
|
2726
|
+
return;
|
|
2727
|
+
}
|
|
2728
|
+
console.log(`customer id: ${result.customer_id}`);
|
|
2729
|
+
for (const campaign of result.campaigns) {
|
|
2730
|
+
const goal = campaign.goal_config_level === "CAMPAIGN" ? `campaign goal: ${(campaign.conversion_actions ?? []).map((a) => a.name || a.id).join(", ")}` : "customer goals";
|
|
2731
|
+
console.log(`${campaign.id} ${campaign.name} ${campaign.status} ${campaign.bidding_strategy_type || "-"} ${goal}`);
|
|
2732
|
+
}
|
|
2733
|
+
} catch (e) {
|
|
2734
|
+
fail(e);
|
|
2735
|
+
}
|
|
2736
|
+
});
|
|
2737
|
+
paidMediaCampaigns.command("conversion-goals <campaignId>").description("Set a campaign's custom conversion goal to exactly these conversion action ids").requiredOption("--actions <ids>", "comma-separated conversion action ids").option("--customer-id <id>", "Google Ads customer id (defaults to the selected account)").option("--json", "print the raw JSON result").action(async (campaignId, opts) => {
|
|
2738
|
+
try {
|
|
2739
|
+
const ids = opts.actions.split(",").map((id) => id.trim()).filter(Boolean);
|
|
2740
|
+
if (!ids.length) throw new Error("--actions must contain at least one id");
|
|
2741
|
+
const result = await new ErdoClient().setPaidMediaCampaignConversionGoals(campaignId, {
|
|
2742
|
+
customer_id: opts.customerId,
|
|
2743
|
+
conversion_action_ids: ids
|
|
2744
|
+
});
|
|
2745
|
+
if (opts.json) {
|
|
2746
|
+
print(result);
|
|
2747
|
+
return;
|
|
2748
|
+
}
|
|
2749
|
+
console.log(`campaign id: ${result.campaign_id}`);
|
|
2750
|
+
if (result.status === "ready") {
|
|
2751
|
+
console.log("status: ready");
|
|
2752
|
+
if (result.goal_config_level) console.log(`goal config level: ${result.goal_config_level}`);
|
|
2753
|
+
} else {
|
|
2754
|
+
console.log("status: pending approval");
|
|
2755
|
+
console.log(`approval request id: ${result.approval_request_id}`);
|
|
2756
|
+
}
|
|
2757
|
+
} catch (e) {
|
|
2758
|
+
fail(e);
|
|
2759
|
+
}
|
|
2760
|
+
});
|
|
2709
2761
|
paidMedia.command("conversion-actions").command("ensure").description("Find or approval-gate creation of an offline lead conversion action").requiredOption("--name <name>", "exact Google Ads conversion action name").option("--category <category>", "QUALIFIED_LEAD or SUBMIT_LEAD_FORM", "QUALIFIED_LEAD").option("--customer-id <id>", "Google Ads customer id (defaults to the selected account)").option("--json", "print the raw JSON result").action(async (opts) => {
|
|
2710
2762
|
try {
|
|
2711
2763
|
if (opts.category && opts.category !== "QUALIFIED_LEAD" && opts.category !== "SUBMIT_LEAD_FORM") {
|