How to create an App Campaign in google ads api?

388 views
Skip to first unread message

Mohammad Reza Kiani

unread,
May 1, 2019, 8:38:44 AM5/1/19
to AdWords API and Google Ads API Forum
Hi
How can I create App Campaign in google ads API in kotlin or java?
I have basic question, should I create group and group ads and AppAddInfo in it or UniversalCampaign is only supported?
Because by setting channel type to MULTI_CHANNEL and channel sub type to APP_CAMPAIGN, it gives me error and I can't create app due to permission. (But for other types like Search Campaign there is no problem)
Can you tell me what should I do step by step for creating App Campaign and add its assets (description, images, youtube videos)?
This is my code for creating Campaign in kotlin:
Campaign.newBuilder()
.setName(StringValue.of(request.name))
.setAdvertisingChannelType(AdvertisingChannelTypeEnum.AdvertisingChannelType.MULTI_CHANNEL)
.setAdvertisingChannelSubType(AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType.APP_CAMPAIGN)
.setAppCampaignSetting(addAppCampaignSetting(request.creative))
// Recommendation: Set the request to PAUSED when creating it to prevent the ads from immediately serving.
// Set to ENABLED once you've added targeting and the ads are ready to serve
.setStatus(CampaignStatusEnum.CampaignStatus.PAUSED)
.setBiddingStrategy(StringValue.of(biddingStrategyResourceName))
.setCampaignBudget(StringValue.of(budgetResourceName))
.setNetworkSettings(networkSettings)
.setStartDate(StringValue.of(request.startDate.createCampaignFormat()))
.setEndDate(StringValue.of(request.endDate.createCampaignFormat()))
.build()

...

private fun addAppCampaignSetting(request: CreateCreativeRequest): Campaign.AppCampaignSetting {
return Campaign.AppCampaignSetting.newBuilder()
.setAppId(StringValue.of(request.appId))
.setAppStore(request.appVendor)
.setBiddingStrategyGoalType(OPTIMIZE_INSTALLS_TARGET_INSTALL_COST)
.build()
}
But it gives me following error:
2019-05-01 17:07:02.261  INFO 79540 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2abac970] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.2.RELEASE)

2019-05-01 17:07:07.435  INFO 79540 --- [           main] i.p.t.googleapi.GoogleApiApplicationKt   : The following profiles are active: local
2019-05-01 17:07:08.322  INFO 79540 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=c3a57b69-be98-3675-872a-c619ad6fc3b5
2019-05-01 17:07:08.607  INFO 79540 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.hateoas.config.HateoasConfiguration' of type [org.springframework.hateoas.config.HateoasConfiguration$$EnhancerBySpringCGLIB$$8e2113a5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-05-01 17:07:08.618  INFO 79540 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$2abac970] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-05-01 17:07:09.031  INFO 79540 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9090 (http)
2019-05-01 17:07:09.055  INFO 79540 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-05-01 17:07:09.055  INFO 79540 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.14]
2019-05-01 17:07:09.062  INFO 79540 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/mamareza/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2019-05-01 17:07:09.222  INFO 79540 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-05-01 17:07:09.222  INFO 79540 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1734 ms
2019-05-01 17:07:19.459  INFO 79540 --- [          Gax-3] c.g.ads.googleads.lib.request.summary    : SUCCESS REQUEST SUMMARY. Method: google.ads.googleads.v1.services.CampaignBudgetService/MutateCampaignBudgets, Endpoint: googleads.googleapis.com:443, CustomerID: 3576925488, RequestID: 4rh_F_BN4ro7sfrJ2PDwFA, ResponseCode: OK, Fault: null.
2019-05-01 17:07:19.462  INFO 79540 --- [           main] i.p.t.g.s.GoogleAdsCampaignService       : Added budget: customers/3576925488/campaignBudgets/1906528061
2019-05-01 17:07:20.957  INFO 79540 --- [          Gax-7] c.g.ads.googleads.lib.request.summary    : SUCCESS REQUEST SUMMARY. Method: google.ads.googleads.v1.services.BiddingStrategyService/MutateBiddingStrategies, Endpoint: googleads.googleapis.com:443, CustomerID: 3576925488, RequestID: OUZ-ts6TDfmfy0CxObCNBw, ResponseCode: OK, Fault: null.
2019-05-01 17:07:20.958  INFO 79540 --- [           main] i.p.t.g.s.GoogleAdsCampaignService       : Added bidding strategy: customers/3576925488/biddingStrategies/1951024900
2019-05-01 17:07:22.303  WARN 79540 --- [         Gax-11] c.g.ads.googleads.lib.request.summary    : FAILURE REQUEST SUMMARY. Method: google.ads.googleads.v1.services.CampaignService/MutateCampaigns, Endpoint: googleads.googleapis.com:443, CustomerID: 3576925488, RequestID: 4bFVc6kw0ieoYGXJhpnZ9Q, ResponseCode: INVALID_ARGUMENT, Fault: Request contains an invalid argument..
2019-05-01 17:07:22.317  INFO 79540 --- [         Gax-11] c.g.ads.googleads.lib.request.detail     : FAILURE REQUEST DETAIL.
Request
-------
MethodName: google.ads.googleads.v1.services.CampaignService/MutateCampaigns
Headers: {developer-token=REDACTED, login-customer-id=9981465586, x-goog-api-client=gl-java/1.8.0_172 gapic/ gax/1.35.0 grpc/1.16.1}
Body: customer_id: "3576925488"
operations {
  create {
    name {
      value: "Campaign Mohammad Reza Kiani 1556714230187"
    }
    status: PAUSED
    campaign_budget {
      value: "customers/3576925488/campaignBudgets/1906528061"
    }
    advertising_channel_type: MULTI_CHANNEL
    advertising_channel_sub_type: APP_CAMPAIGN
    network_settings {
      target_google_search {
        value: true
      }
      target_search_network {
        value: true
      }
      target_content_network {
      }
      target_partner_search_network {
      }
    }
    start_date {
      value: "20190502"
    }
    end_date {
      value: "20190531"
    }
    bidding_strategy {
      value: "customers/3576925488/biddingStrategies/1951024900"
    }
    app_campaign_setting {
      bidding_strategy_goal_type: OPTIMIZE_INSTALLS_TARGET_INSTALL_COST
      app_id {
        value: "com.taghvimfa.pixar"
      }
      app_store: GOOGLE_APP_STORE
    }
  }
}


Response
--------
Headers: Metadata(content-type=application/grpc,request-id=4bFVc6kw0ieoYGXJhpnZ9Q,date=Wed, 01 May 2019 12:37:22 GMT,alt-svc=quic=":443"; ma=2592000; v="46,44,43,39")
Body: null
Failure message: errors {
  error_code {
    operation_access_denied_error: MUTATE_ACTION_NOT_PERMITTED_FOR_CLIENT
  }
  message: "A mutate action is not allowed on this campaign, from this client."
  trigger {
    string_value: ""
  }
  location {
    field_path_elements {
      field_name: "operations"
      index {
      }
    }
  }
}

Status: Status{code=INVALID_ARGUMENT, description=Request contains an invalid argument., cause=null}.
2019-05-01 17:07:22.587  WARN 79540 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'googleAdsCampaignService': Invocation of init method failed; nested exception is com.google.ads.googleads.v1.errors.GoogleAdsException: errors {
  error_code {
    operation_access_denied_error: MUTATE_ACTION_NOT_PERMITTED_FOR_CLIENT
  }
  message: "A mutate action is not allowed on this campaign, from this client."
  trigger {
    string_value: ""
  }
  location {
    field_path_elements {
      field_name: "operations"
      index {
      }
    }
  }
}

2019-05-01 17:07:22.588  INFO 79540 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-05-01 17:07:22.598  INFO 79540 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-05-01 17:07:22.612 ERROR 79540 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'googleAdsCampaignService': Invocation of init method failed; nested exception is com.google.ads.googleads.v1.errors.GoogleAdsException: errors {
  error_code {
    operation_access_denied_error: MUTATE_ACTION_NOT_PERMITTED_FOR_CLIENT
  }
  message: "A mutate action is not allowed on this campaign, from this client."
  trigger {
    string_value: ""
  }
  location {
    field_path_elements {
      field_name: "operations"
      index {
      }
    }
  }
}

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:419) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1737) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863) ~[spring-context-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at ch.sbb.esta.openshift.gracefullshutdown.GracefulshutdownSpringApplication.run(GracefulshutdownSpringApplication.java:21) [springboot-graceful-shutdown-2.0.jar:na]
at ir.pegahtech.tapsell.googleapi.GoogleApiApplicationKt.main(GoogleApiApplication.kt:28) [classes/:na]
Caused by: com.google.ads.googleads.v1.errors.GoogleAdsException: errors {
  error_code {
    operation_access_denied_error: MUTATE_ACTION_NOT_PERMITTED_FOR_CLIENT
  }
  message: "A mutate action is not allowed on this campaign, from this client."
  trigger {
    string_value: ""
  }
  location {
    field_path_elements {
      field_name: "operations"
      index {
      }
    }
  }
}

at com.google.ads.googleads.v1.errors.GoogleAdsException$Factory.createException(GoogleAdsException.java:42) ~[google-ads-1.1.0.jar:na]
at com.google.ads.googleads.v1.errors.GoogleAdsException$Factory.createException(GoogleAdsException.java:34) ~[google-ads-1.1.0.jar:na]
at com.google.ads.googleads.lib.BaseGoogleAdsException$Factory.createGoogleAdsException(BaseGoogleAdsException.java:105) ~[google-ads-1.1.0.jar:na]
at com.google.ads.googleads.lib.GoogleAdsExceptionTransformation.transform(GoogleAdsExceptionTransformation.java:35) ~[google-ads-1.1.0.jar:na]
at com.google.ads.googleads.lib.ExceptionTransformingCallable$ExceptionTransformingFuture.onFailure(ExceptionTransformingCallable.java:83) ~[google-ads-1.1.0.jar:na]
at com.google.api.core.ApiFutures$1.onFailure(ApiFutures.java:68) ~[api-common-1.7.0.jar:na]
at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1070) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1138) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:958) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:748) ~[guava-27.1-jre.jar:na]
at com.google.api.core.AbstractApiFuture$InternalSettableFuture.setException(AbstractApiFuture.java:95) ~[api-common-1.7.0.jar:na]
at com.google.api.core.AbstractApiFuture.setException(AbstractApiFuture.java:77) ~[api-common-1.7.0.jar:na]
at com.google.api.gax.grpc.GrpcExceptionCallable$ExceptionTransformingFuture.onFailure(GrpcExceptionCallable.java:97) ~[gax-grpc-1.35.0.jar:1.35.0]
at com.google.api.core.ApiFutures$1.onFailure(ApiFutures.java:68) ~[api-common-1.7.0.jar:na]
at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1070) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1138) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:958) ~[guava-27.1-jre.jar:na]
at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:748) ~[guava-27.1-jre.jar:na]
at io.grpc.stub.ClientCalls$GrpcFuture.setException(ClientCalls.java:507) ~[grpc-stub-1.16.1.jar:1.16.1]
at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:482) ~[grpc-stub-1.16.1.jar:1.16.1]
at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40) ~[grpc-core-1.16.1.jar:1.16.1]
at com.google.ads.googleads.lib.logging.LoggingInterceptor$1$1.onClose(LoggingInterceptor.java:111) ~[google-ads-1.1.0.jar:na]
at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.CensusStatsModule$StatsClientInterceptor$1$1.onClose(CensusStatsModule.java:678) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.CensusTracingModule$TracingClientInterceptor$1$1.onClose(CensusTracingModule.java:397) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:459) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:63) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:546) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$600(ClientCallImpl.java:467) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:584) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) ~[grpc-core-1.16.1.jar:1.16.1]
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123) ~[grpc-core-1.16.1.jar:1.16.1]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_172]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_172]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_172]
Suppressed: com.google.api.gax.rpc.AsyncTaskException: Asynchronous task failed
at com.google.api.gax.rpc.ApiExceptions.callAndTranslateApiException(ApiExceptions.java:57) ~[gax-1.35.0.jar:1.35.0]
at com.google.api.gax.rpc.UnaryCallable.call(UnaryCallable.java:112) ~[gax-1.35.0.jar:1.35.0]
at com.google.ads.googleads.v1.services.CampaignServiceClient.mutateCampaigns(CampaignServiceClient.java:335) ~[google-ads-1.1.0.jar:na]
at com.google.ads.googleads.v1.services.CampaignServiceClient.mutateCampaigns(CampaignServiceClient.java:310) ~[google-ads-1.1.0.jar:na]
at ir.pegahtech.tapsell.googleapi.services.GoogleAdsCampaignService.addCampaign(GoogleAdsCampaignService.kt:141) ~[classes/:na]
at ir.pegahtech.tapsell.googleapi.services.GoogleAdsCampaignService.test(GoogleAdsCampaignService.kt:43) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_172]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_172]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_172]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_172]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:419) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1737) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863) ~[spring-context-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-2.1.2.RELEASE.jar:2.1.2.RELEASE]
at ch.sbb.esta.openshift.gracefullshutdown.GracefulshutdownSpringApplication.run(GracefulshutdownSpringApplication.java:21) [springboot-graceful-shutdown-2.0.jar:na]
at ir.pegahtech.tapsell.googleapi.GoogleApiApplicationKt.main(GoogleApiApplication.kt:28) [classes/:na]
Caused by: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: Request contains an invalid argument.
at io.grpc.Status.asRuntimeException(Status.java:526) ~[grpc-core-1.16.1.jar:1.16.1]
... 27 common frames omitted


Process finished with exit code 1


Mohammad Reza Kiani

unread,
May 4, 2019, 5:03:23 AM5/4/19
to AdWords API and Google Ads API Forum
Can any supporter answer me?
I've understood that my account should be whitelisted for managing App Campaign ads. My question is that how can I access assets added to an App Campaign for example via GUI? I want to get some performance stats reports from assets but I can't find associated assets to an App Campaign via API

Mehmet Bilgin

unread,
Jun 12, 2019, 5:24:22 PM6/12/19
to AdWords API and Google Ads API Forum
Hi Mohammad,

Did you manage to create app campaign via api?

Thanks
Mehmet

Google Ads API Forum Advisor Prod

unread,
Jun 14, 2019, 1:30:59 AM6/14/19
to adwor...@googlegroups.com
Hi Mohammad,

Creating app campaigns via the Google Ads API is currently on a whitelist only basis. I would recommend that you reach out to your Google Manager/Representative to have your account whitelisted for this feature.

Once you have been whitelisted, you may then retry your request to create your app campaigns. I hope this helps.

Thanks and regards,
Peter
Google Ads API Team

ref:_00D1U1174p._5001UBmzSf:ref
Reply all
Reply to author
Forward
0 new messages