diff --git a/packages/destination-actions/src/destinations/google-enhanced-conversions/functions.ts b/packages/destination-actions/src/destinations/google-enhanced-conversions/functions.ts index 5b0da7a5d7..ef44dd2ee2 100644 --- a/packages/destination-actions/src/destinations/google-enhanced-conversions/functions.ts +++ b/packages/destination-actions/src/destinations/google-enhanced-conversions/functions.ts @@ -5,7 +5,12 @@ import { QueryResponse, ConversionActionId, ConversionActionResponse, - CustomVariableInterface + CustomVariableInterface, + CreateAudienceInput, + CreateGoogleAudienceResponse, + AudienceSettings, + UserListResponse, + UserList } from './types' import { ModifiedResponse, @@ -25,16 +30,6 @@ export const API_VERSION = 'v16' export const CANARY_API_VERSION = 'v16' export const FLAGON_NAME = 'google-enhanced-canary-version' -export interface AudienceSettings { - external_id_type: string -} -export interface GoogleAdsResonse { - resourceName?: string -} -export interface CreateGoogleAudienceResponse { - resourceName?: string - results: Array<{ resourceName: string }> -} export class GoogleAdsError extends HTTPError { response: Response & { status: string @@ -42,18 +37,6 @@ export class GoogleAdsError extends HTTPError { } } -export interface CreateAudienceInput { - audienceName: string - settings: { - customerId?: string - conversionTrackingId?: string - } - audienceSettings: { - external_id_type: string - app_id?: string - } -} - export function formatCustomVariables( customVariables: object, customVariableIdsResults: Array @@ -215,19 +198,35 @@ export async function getListIds(request: RequestClient, settings: CreateAudienc query: `SELECT user_list.id, user_list.name FROM user_list` } - const response = await request( - `https://googleads.googleapis.com/${API_VERSION}/customers/${settings.customerId}/googleAds:search`, - { - method: 'post', - headers: { - 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`, - authorization: `Bearer ${auth?.accessToken}` - }, - json - } - ) + try { + const response: ModifiedResponse = await request( + `https://googleads.googleapis.com/${API_VERSION}/customers/${settings.customerId}/googleAds:search`, + { + method: 'post', + headers: { + 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`, + authorization: `Bearer ${auth?.accessToken}` + }, + json + } + ) - return (response.data as any).results + const choices = response.data.results.map((input: UserList) => { + return { value: input.userList.id, label: input.userList.name } + }) + return { + choices + } + } catch (err) { + return { + choices: [], + nextPage: '', + error: { + message: (err as GoogleAdsError).response?.statusText ?? 'Unknown error', + code: (err as GoogleAdsError).response?.status + '' ?? '500' + } + } + } } export async function createGoogleAudience( @@ -258,7 +257,7 @@ export async function createGoogleAudience( } const response = await request( - `https://googleads.googleapis.com/${API_VERSION}/customers/${input.settings.customerId}:mutate`, + `https://googleads.googleapis.com/${API_VERSION}/customers/${input.settings.customerId}/userLists:mutate`, { method: 'post', headers: { diff --git a/packages/destination-actions/src/destinations/google-enhanced-conversions/index.ts b/packages/destination-actions/src/destinations/google-enhanced-conversions/index.ts index 2ece378be0..14fe72605a 100644 --- a/packages/destination-actions/src/destinations/google-enhanced-conversions/index.ts +++ b/packages/destination-actions/src/destinations/google-enhanced-conversions/index.ts @@ -4,7 +4,8 @@ import postConversion from './postConversion' import uploadCallConversion from './uploadCallConversion' import uploadClickConversion from './uploadClickConversion' import uploadConversionAdjustment from './uploadConversionAdjustment' -import { CreateAudienceInput, createGoogleAudience, getGoogleAudience } from './functions' +import { CreateAudienceInput } from './types' +import { createGoogleAudience, getGoogleAudience } from './functions' import userList from './userList' diff --git a/packages/destination-actions/src/destinations/google-enhanced-conversions/types.ts b/packages/destination-actions/src/destinations/google-enhanced-conversions/types.ts index a5f00c41f8..b6406d638d 100644 --- a/packages/destination-actions/src/destinations/google-enhanced-conversions/types.ts +++ b/packages/destination-actions/src/destinations/google-enhanced-conversions/types.ts @@ -119,3 +119,37 @@ export interface PartialErrorResponse { } results: {}[] } + +export interface UserList { + userList: { + resourceName: string + id: string + name: string + } +} + +export interface UserListResponse { + results: Array + fieldMask: string +} + +export interface CreateAudienceInput { + audienceName: string + settings: { + customerId?: string + conversionTrackingId?: string + } + audienceSettings: { + external_id_type: string + app_id?: string + } +} + +export interface CreateGoogleAudienceResponse { + resourceName?: string + results: Array<{ resourceName: string }> +} + +export interface AudienceSettings { + external_id_type: string +}