Posts under category Google

Does google ads API work?

When I click the google ads API document, I get "Service Unavailable".

  1. Where can I see this API status, and when it's back?
  2. Can I use this API to create custom audience/lookalike audience just like facebook ads API?
  3. (Additional) I am NodeJS developer, is there any library that is already working well with ads API?

Thank you so much!

I am trying to set up a data extract in BigQuery to pull data from a Google Ads Account. But I keep getting Auth errors (AuthenticationError.NOT_ADS_USER) when the extract tries starting pulling data.

<ApiError><type>AuthenticationError.NOT_ADS_USER</type><trigge 

What did I do?-

Is there something that I missed, that I have to enable/accept/configure in order for Big query extract to be able to pull the data from Google Ads?

Thanks,

p.s I have another extract in the same big query account with a different Google Ads account that is working, I recall have followed the same steps.

Recently my application started spamming logs with the following set of messages

W/ColorUtils: expected specified color aspects (0:0:0:0) D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.max-count.values D/ReflectedParamUpdater: extent() != 1 for single value type: output.subscribed-indices.values D/ReflectedParamUpdater: extent() != 1 for single value type: input.buffers.allocator-ids.values D/ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.allocator-ids.values D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.allocator-ids.values D/ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.pool-ids.values D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.pool-ids.values 

I can't see the "expected specified color aspects" in the sources my IDE has downloaded or by Googling and I have struggled to identify what triggers this, since the log is quickly overwhelmed by these messages

The only reference I found which could be related is this question but I do not use exoplayer. The only thing which may be using videos is the Google Ads SDK.

Does anyone know what the root cause is for this spam? If it's in ads, is there a way to disable it?

I saw a blog where “Segment Conversion Type Name” and “Segment Conversion Category” cannot coexist with non-conversion metrics—such as cost, clicks, or impressions:

https://www.workshopdigital.com/blog/3-google-data-studio-shortcomings-for-ppc-analysts/

I am trying to build us a report that will show the cost per segment conversion category per location but alongside it is I also have the non-conversion metrics. I don't really want to build another table just for the conversions since the data looks messed up.

I'm trying to create a remarketing userList add some users into it using the Java implementation for Google Ads Api.

The custom audience creation part looks fine, I can see it created in the Ads plataform, but looks like the users wasn't included into it.

Print screen: Empty custom audience inside google ads plataform

I'm sending a JsonArray with 2000 user as parameter and hashing it inside this function, and used this samples as reference.

I'm not sure if I misunderstood the documentation or if I'm including the userList in a wrong way or anything like that.

    public JsonArray uploadJsonList(String customerId, JsonArray jsonUsers) throws Exception {                List<Member> members = new ArrayList<>();         JsonObject hashedObj = new JsonObject();         JsonArray arrayJsonHashed = new JsonArray();                          for (JsonValue jsonValue : jsonUsers) {                          JsonObject obj = jsonValue.asObject();             hashedObj = new JsonObject();                          //Getting user data             String normalizedEmail = textUtils.toNormalizedString(obj.get("PESSOA_EMAIL1").toString());             String normalizedPhone = textUtils.toNormalizedString(obj.get("PESSOA_CELULAR").toString());              String normalizedId = obj.get("PESSOA_ID").toString();              normalizedId = removeFirstandLast(normalizedId);                      //Hashing user data             hashedObj.add("pessoa_email1", textUtils.toSHA256String(normalizedEmail));             hashedObj.add("pessoa_celular", textUtils.toSHA256String(normalizedPhone));             hashedObj.add("pessoa_id",normalizedId);             arrayJsonHashed.add(hashedObj);                          //Creating a member list             Member member = new Member();             member.setHashedEmail(textUtils.toSHA256String(normalizedEmail));             member.setHashedPhoneNumber(textUtils.toSHA256String(normalizedPhone));             members.add(member);                  }                  //starting ads services         AdWordsServices adWordsServices = new AdWordsServices();         Customer[] customers = getCustomers(adWordsServices, session);         session.setClientCustomerId(customerId);         AdwordsUserListServiceInterface userListService = adWordsServices.get(session, AdwordsUserListServiceInterface.class);                  // Create a user list.         CrmBasedUserList userList = new CrmBasedUserList();         userList.setName("Test Remarketing Custom Audience - " + System.currentTimeMillis());         userList.setDescription("A list of customers that was readed from big query");                  // CRM-based user lists can use a membershipLifeSpan of 10000 to indicate unlimited; otherwise         // normal values apply.         userList.setMembershipLifeSpan(100L);         userList.setUploadKeyType(CustomerMatchUploadKeyType.CONTACT_INFO);                                  // Create operation.         UserListOperation operation = new UserListOperation();         operation.setOperand(userList);         operation.setOperator(Operator.ADD);         // Add user list.         UserListReturnValue result = userListService.mutate(new UserListOperation[]{operation});         // Display user list.         UserList userListAdded = result.getValue(0);         System.out.printf(                 "User list with name '%s' and ID %d was added.%n",                 userListAdded.getName(), userListAdded.getId());         // Get user list ID.         Long userListId = userListAdded.getId();         // Create operation to add members to the user list based on email addresses.         MutateMembersOperation mutateMembersOperation = new MutateMembersOperation();         MutateMembersOperand operand = new MutateMembersOperand();         operand.setUserListId(userListId);         operand.setMembersList(members.toArray(new Member[members.size()]));                     mutateMembersOperation.setOperand(operand);         mutateMembersOperation.setOperator(Operator.ADD);                  // Add members to the user list based on email addresses.         MutateMembersReturnValue mutateMembersResult =                 userListService.mutateMembers(new MutateMembersOperation[]{mutateMembersOperation});         // Display results.         // Reminder: it may take several hours for the list to be populated with members.         for (UserList userListResult : mutateMembersResult.getUserLists()) {             System.out.printf(                     "%d email addresses were uploaded to user list with name '%s' and ID %d "                             + "and are scheduled for review.%n",                             members.size(), userListResult.getName(), userListResult.getId());         }                          return arrayJsonHashed;     }