From dfabdb3e09861000e1761102b2c0784cd51cca9c Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 6 Nov 2025 13:40:48 -0500 Subject: [PATCH 1/4] generate-keyword-ideas --- .../generate-keyword-ideas.mjs | 36 +++++++++++++++++++ components/google_ads/google_ads.app.mjs | 7 ++++ 2 files changed, 43 insertions(+) create mode 100644 components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs diff --git a/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs b/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs new file mode 100644 index 0000000000000..5f50f672a462b --- /dev/null +++ b/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs @@ -0,0 +1,36 @@ +import common from "../common/common.mjs"; +import { getAdditionalFields } from "../common/props.mjs"; +import { + parseObject, parseStringObject, +} from "../../common/utils.mjs"; +const docLink = "https://developers.google.com/google-ads/api/reference/rpc/v22/KeywordPlanIdeaService/GenerateKeywordIdeas?transport=rest"; + +export default { + key: "google-ads-generate-keyword-ideas", + name: "Generate Keyword Ideas", + description: `Generate keyword ideas using the Google Ads API. [See the documentation](${docLink})`, + version: "0.0.1", + type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, + props: { + ...common.props, + additionalFields: getAdditionalFields(docLink), + }, + async run({ $ }) { + const additionalFields = parseObject(parseStringObject(this.additionalFields)); + const response = await this.googleAds.generateKeywordIdeas({ + $, + accountId: this.accountId, + customerClientId: this.customerClientId, + data: { + ...additionalFields, + }, + }); + $.export("$summary", "Successfully generated keyword ideas."); + return response; + }, +}; diff --git a/components/google_ads/google_ads.app.mjs b/components/google_ads/google_ads.app.mjs index 3b8edefdab9e4..85e49eaf1ff9f 100644 --- a/components/google_ads/google_ads.app.mjs +++ b/components/google_ads/google_ads.app.mjs @@ -247,5 +247,12 @@ export default { ...args, }); }, + async generateKeywordIdeas(opts = {}) { + return this._makeRequest({ + method: "POST", + path: "/v22/customers/{customerClientId}:generateKeywordIdeas", + ...opts, + }); + }, }, }; From 785a0c4ac8e7fc69f402cc08aa14c9a76154d208 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 6 Nov 2025 13:44:08 -0500 Subject: [PATCH 2/4] versions --- .../add-contact-to-list-by-email.mjs | 2 +- .../actions/create-customer-list/create-customer-list.mjs | 2 +- components/google_ads/actions/create-report/create-report.mjs | 2 +- .../actions/send-offline-conversion/send-offline-conversion.mjs | 2 +- components/google_ads/package.json | 2 +- .../sources/new-campaign-created/new-campaign-created.mjs | 2 +- .../sources/new-lead-form-entry/new-lead-form-entry.mjs | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/google_ads/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs b/components/google_ads/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs index f720bd7dd2553..3c5bc01424509 100644 --- a/components/google_ads/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs +++ b/components/google_ads/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs @@ -7,7 +7,7 @@ export default { key: "google_ads-add-contact-to-list-by-email", name: "Add Contact to Customer List by Email", description: "Adds a contact to a specific customer list in Google Ads. Lists typically update in 6 to 12 hours after operation. [See the documentation](https://developers.google.com/google-ads/api/docs/remarketing/audience-segments/customer-match/get-started)", - version: "0.1.5", + version: "0.1.6", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/google_ads/actions/create-customer-list/create-customer-list.mjs b/components/google_ads/actions/create-customer-list/create-customer-list.mjs index 3919835c8232b..a3335edadfde6 100644 --- a/components/google_ads/actions/create-customer-list/create-customer-list.mjs +++ b/components/google_ads/actions/create-customer-list/create-customer-list.mjs @@ -15,7 +15,7 @@ export default { key: "google_ads-create-customer-list", name: "Create Customer List", description: "Create a new customer list in Google Ads. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v21/UserList)", - version: "0.0.6", + version: "0.0.7", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/google_ads/actions/create-report/create-report.mjs b/components/google_ads/actions/create-report/create-report.mjs index 06a95d5ce0b83..8ded63c99c9bf 100644 --- a/components/google_ads/actions/create-report/create-report.mjs +++ b/components/google_ads/actions/create-report/create-report.mjs @@ -19,7 +19,7 @@ export default { key: "google_ads-create-report", name: "Create Report", description: "Generates a report from your Google Ads data. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v21/GoogleAdsService/Search?transport=rest)", - version: "0.1.4", + version: "0.1.5", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs b/components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs index 82f7341926a73..ca8643f7e1f73 100644 --- a/components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs +++ b/components/google_ads/actions/send-offline-conversion/send-offline-conversion.mjs @@ -8,7 +8,7 @@ export default { key: "google_ads-send-offline-conversion", name: "Send Offline Conversion", description: "Send an event to Google Ads to track offline conversions. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v21/ConversionAction)", - version: "0.0.6", + version: "0.0.7", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/google_ads/package.json b/components/google_ads/package.json index a729c3d04b7be..4a8f4fd4ddde6 100644 --- a/components/google_ads/package.json +++ b/components/google_ads/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/google_ads", - "version": "0.3.3", + "version": "0.4.0", "description": "Pipedream Google Ads Components", "main": "google_ads.app.mjs", "keywords": [ diff --git a/components/google_ads/sources/new-campaign-created/new-campaign-created.mjs b/components/google_ads/sources/new-campaign-created/new-campaign-created.mjs index 59cf8f492133d..d9dc3a38141de 100644 --- a/components/google_ads/sources/new-campaign-created/new-campaign-created.mjs +++ b/components/google_ads/sources/new-campaign-created/new-campaign-created.mjs @@ -7,7 +7,7 @@ export default { key: "google_ads-new-campaign-created", name: "New Campaign Created", description: "Emit new event when a new campaign is created. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v21/GoogleAdsService/Search?transport=rest)", - version: "0.0.5", + version: "0.0.6", type: "source", dedupe: "unique", sampleEmit, diff --git a/components/google_ads/sources/new-lead-form-entry/new-lead-form-entry.mjs b/components/google_ads/sources/new-lead-form-entry/new-lead-form-entry.mjs index b46e79b79c4b6..da75cd375f0ae 100644 --- a/components/google_ads/sources/new-lead-form-entry/new-lead-form-entry.mjs +++ b/components/google_ads/sources/new-lead-form-entry/new-lead-form-entry.mjs @@ -8,7 +8,7 @@ export default { key: "google_ads-new-lead-form-entry", name: "New Lead Form Entry", description: "Emit new event for new leads on a Lead Form. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v21/GoogleAdsService/Search?transport=rest)", - version: "0.0.5", + version: "0.0.6", type: "source", dedupe: "unique", sampleEmit, From bf93b656227c600688ff1582633ad418f021f95c Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 6 Nov 2025 13:55:08 -0500 Subject: [PATCH 3/4] fix key --- .../actions/generate-keyword-ideas/generate-keyword-ideas.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs b/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs index 5f50f672a462b..e86548c239edf 100644 --- a/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs +++ b/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs @@ -6,7 +6,7 @@ import { const docLink = "https://developers.google.com/google-ads/api/reference/rpc/v22/KeywordPlanIdeaService/GenerateKeywordIdeas?transport=rest"; export default { - key: "google-ads-generate-keyword-ideas", + key: "google_ads-generate-keyword-ideas", name: "Generate Keyword Ideas", description: `Generate keyword ideas using the Google Ads API. [See the documentation](${docLink})`, version: "0.0.1", From d81c6fbc9a3302d0ff5997f0cde4db577b1d23a4 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Mon, 10 Nov 2025 11:36:30 -0500 Subject: [PATCH 4/4] update --- .../generate-keyword-ideas.mjs | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs b/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs index e86548c239edf..b1b7fb8b15650 100644 --- a/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs +++ b/components/google_ads/actions/generate-keyword-ideas/generate-keyword-ideas.mjs @@ -1,4 +1,4 @@ -import common from "../common/common.mjs"; +import googleAds from "../../google_ads.app.mjs"; import { getAdditionalFields } from "../common/props.mjs"; import { parseObject, parseStringObject, @@ -17,8 +17,27 @@ export default { readOnlyHint: true, }, props: { - ...common.props, - additionalFields: getAdditionalFields(docLink), + googleAds, + accountId: { + propDefinition: [ + googleAds, + "accountId", + ], + }, + customerClientId: { + propDefinition: [ + googleAds, + "customerClientId", + ({ accountId }) => ({ + accountId, + }), + ], + optional: false, + }, + additionalFields: { + ...getAdditionalFields(docLink), + optional: false, + }, }, async run({ $ }) { const additionalFields = parseObject(parseStringObject(this.additionalFields));