Posts tagged with google-ads-api

Has anyone put a Google ad conversion tag on a WooCommerce order confirmation page?

We have our website on Wordpress, use WooCommerce for our ordering and use a Divi Theme.

I tried doing this with one webmaster and we weren't able to get it to work. We tried putting the tag on the order confirmation page and couldn't get it to work.

Now, I have a new webmaster. I set up the conversion tag in Google ads and emailed it to her. She said she used a plug in to set it up on the page. She said she viewed the page, but I'm still seeing it labeled as inactive in Google ads.

Don't know why we're having such problems? What's the trick?

I'm not very familiar with Wordpress. Seems like this should be worked out or other people should also be having this problem.

PHP was suggested as a tag for this question, so I thought I would add it.

Thanks,

pipenv install google-ads produces an error:

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. This is likely caused by a bug in google-ads. Report this to its maintainers. ✘ Installation Failed 

This is the whole thing:

% pipenv install google-ads Creating a virtualenv for this project... Pipfile: /Users/ralf/code/test_snippets/20-12-10_google_ads/Pipfile Using /usr/local/bin/python3.9 (3.9.0) to create virtualenv... ⠦ Creating virtual environment...created virtual environment CPython3.9.0.final.0-64 in 325ms   creator CPython3Posix(dest=/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj, clear=False, global=False)   seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/ralf/Library/Application Support/virtualenv)     added seed packages: pip==20.2.4, setuptools==50.3.2, wheel==0.35.1   activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator ✔ Successfully created virtual environment!  Virtualenv location: /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj Installing google-ads... Error:  An error occurred while installing google-ads! Error text: Processing /Users/ralf/Library/Caches/pipenv/wheels/0a/09/22/d4a45ac4200d9c68a5215e554d4181b51af2c01b4f16232b5c/google_ads-8.0.0-py3-none-any.whl Collecting googleapis-common-protos<2.0.0,>=1.5.8   Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB) Collecting google-auth-oauthlib<1.0.0,>=0.3.0   Using cached google_auth_oauthlib-0.4.2-py2.py3-none-any.whl (18 kB) Collecting protobuf<4.0.0,>=3.13.0   Using cached protobuf-3.14.0-py2.py3-none-any.whl (173 kB) Collecting google-api-core<2.0.0,>=1.14.0   Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB) Processing /Users/ralf/Library/Caches/pipenv/wheels/69/60/81/5cd74b8ee068fbe9e04ca0d53148f28f5c6e2c5b177d5dd622/PyYAML-5.3.1-cp39-cp39-macosx_11_0_x86_64.whl Requirement already satisfied, skipping upgrade: setuptools>=40.3.0 in /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages (from google-ads->-r /var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pipenv-p0t2erav-requirements/pipenv-xefzspt6-requirement.txt (line 1)) (50.3.2) Collecting grpcio<2.0.0,>=1.33.2   Using cached grpcio-1.34.0.tar.gz (21.0 MB)     ERROR: Command errored out with exit status 1:      command: /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/setup.py'"'"'; __file__='"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-pip-egg-info-d7h_fmnt          cwd: /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/     Complete output (9 lines):     Traceback (most recent call last):       File "<string>", line 1, in <module>       File "/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/setup.py", line 359, in <module>         if mac_target and (pkg_resources.parse_version(mac_target) <       File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/__init__.py", line 113, in parse_version         return packaging.version.Version(v)       File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py", line 275, in __init__         match = self._regex.search(version)     TypeError: expected string or bytes-like object     ---------------------------------------- ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. This is likely caused by a bug in google-ads. Report this to its maintainers. ✘ Installation Failed  

I do not know much about pipenv, I am just using it – so far without any problems. Now I started from scratch and ran brew update, brew outdated and brew upgrade before.

How do I report that to its maintainers best, and what does "its" mean, Google Ads or Pipenv? Is there something else I could do?

Update:

Following tai271828's advice here are some further information about the system I am using:

  • I just updated to Mac OS 11.1 (20C69) (so it probably was 11.01 before)
  • python --version --> Python 2.7.16
  • which python --> /usr/bin/python
  • which python3 --> /usr/local/bin/python3
  • python3 --version --> Python 3.9.0
  • which pipenv --> /usr/local/bin/pipenv
  • which pip --> /usr/local/bin/pip
  • which pip3 --> /usr/local/bin/pip3

I used homebrew to install Python 3 and then pip3 install pipenv.

Update 2:

With simply pip (instead of pipenv) I first ran into the same error, but after updating pip, it worked fine. This was my input:

python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install google-ads 

Update 3:

I tried to follow tai271828's advise, to update my pip in my pipenv env prior to installing the google-ads package. These were my commands:

pipenv --rm pipenv shell pip insall --upgrade pip exit pipenv install google-ads 

The error message still looks similar:

Installing google-ads... Adding google-ads to Pipfile's [packages]... ✔ Installation Succeeded  Pipfile.lock (16c839) out of date, updating to (f55075)... Locking [dev-packages] dependencies... Locking [packages] dependencies... Building requirements... Resolving dependencies... ✘ Locking Failed!  ERROR:pip.subprocessor:Command errored out with exit status 1:  command: /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/setup.py'"'"'; __file__='"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/pip-egg-info      cwd: /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/ Complete output (9 lines): Traceback (most recent call last):   File "<string>", line 1, in <module>   File "/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/setup.py", line 359, in <module>     if mac_target and (pkg_resources.parse_version(mac_target) <   File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/__init__.py", line 113, in parse_version     return packaging.version.Version(v)   File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py", line 275, in __init__     match = self._regex.search(version) TypeError: expected string or bytes-like object ---------------------------------------- Traceback (most recent call last):   File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 764, in <module>     main()   File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 758, in main     _main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,   File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 741, in _main     resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)   File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 702, in resolve_packages     results, resolver = resolve(   File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 684, in resolve     return resolve_deps(   File "/usr/local/lib/python3.9/site-packages/pipenv/utils.py", line 1395, in resolve_deps     results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(   File "/usr/local/lib/python3.9/site-packages/pipenv/utils.py", line 1108, in actually_resolve_deps     resolver.resolve()   File "/usr/local/lib/python3.9/site-packages/pipenv/utils.py", line 823, in resolve     results = self.resolver.resolve(max_rounds=environments.PIPENV_MAX_ROUNDS)   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/resolver.py", line 180, in resolve     has_changed, best_matches = self._resolve_one_round()   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/resolver.py", line 268, in _resolve_one_round     their_constraints.extend(self._iter_dependencies(best_match))   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/resolver.py", line 383, in _iter_dependencies     dependencies = self.repository.get_dependencies(ireq)   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 229, in get_dependencies     legacy_results = self.get_legacy_dependencies(ireq)   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 350, in get_legacy_dependencies     results, ireq = self.resolve_reqs(   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 306, in resolve_reqs     results = resolver._resolve_one(reqset, ireq)   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/legacy_resolve.py", line 339, in _resolve_one     abstract_dist = self._get_abstract_dist_for(req_to_install)   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/legacy_resolve.py", line 287, in _get_abstract_dist_for     abstract_dist = self.preparer.prepare_linked_requirement(req)   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/operations/prepare.py", line 508, in prepare_linked_requirement     abstract_dist = _get_prepared_distribution(   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/operations/prepare.py", line 95, in _get_prepared_distribution     abstract_dist.prepare_distribution_metadata(finder, build_isolation)   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/distributions/sdist.py", line 40, in prepare_distribution_metadata     self.req.prepare_metadata()   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/req/req_install.py", line 564, in prepare_metadata     self.metadata_directory = self._generate_metadata()   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/req/req_install.py", line 538, in _generate_metadata     return generate_metadata_legacy(   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/operations/build/metadata_legacy.py", line 115, in generate_metadata     call_subprocess(   File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/utils/subprocess.py", line 242, in call_subprocess     raise InstallationError(exc_msg) pipenv.patched.notpip._internal.exceptions.InstallationError: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

By the way: I upgraded to Python 3.9.1 meanwhile.

I am not a developer so I apologize in advance if my question is really basic. I've managed to successfully install this Google script Twitter API integration below and send tweets from a Google sheet (the code was offered here). I simply use =sendTweet(message) in a cell, replacing message with the cell reference of where i have the text for the tweet, for example =sendTweet(C6) and the new Tweet will contain the pre-prepared text in cell C6.

What i'm trying to do is to add to the script the option of sending a tweet in reply to another tweet. Reading on Twitter's API documentation, I understand that the in_reply_to_status_id parameter needs to pass the in_reply_to_status_id in the API call URL but that's as far as my understanding goes.

I don't know how to define this new tweet_id variable and how to get it to pass the in_reply_to_status_id=tweet_id string in the right place so it will function. The ideal would be to use the same formula but with the addition of tweet_id for the reply, as a second variable. For example =sendTweet(message, tweet_id).

Your help would be much appreciated 🙏

// User-level Twitter API request // Requires the OAuth1 library to be pasted into the script. // https://developers.google.com/google-ads/scripts/docs/examples/oauth10-library var CONSUMER_KEY = '************************'; var CONSUMER_SECRET = '************************'; var ACCESS_TOKEN = '************************'; var ACCESS_SECRET = '************************'; /**  * Sends a tweet.  * @param {string} message The message to send.  * @return {?Object} The complex response object with the status of the send  *     request. See https://dev.twitter.com/rest/reference/post/statuses/update  *     for the structure of this object.  */ function sendTweet(message) {   if (typeof OAuth1 === 'undefined') {     var libUrl = 'https://developers.google.com/google-ads/scripts/docs/examples/oauth10-library';     throw Error('OAuth1 library not found. Please take a copy of the OAuth1 ' +         'library from ' + libUrl + ' and append to the bottom of this script.');   }   var params = '';   var tweet = message.substring(0, 160);   var options = {method: 'POST', payload: {status: tweet}};   var authUrlFetch = OAuth1.withAccessToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);   var response = authUrlFetch.fetch('https://api.twitter.com/1.1/statuses/update.json', params, options);   var responseText = response.getContentText();   return JSON.parse(responseText); } 

I have created a script in GoogleAds to fetch this report: https://developers.google.com/adwords/api/docs/appendix/reports/product-partition-report from GoogleAds and insert the result as a table in BigQuery using the AdvanceAPI in GoogeAds.

The script I am running is built according to this sample code: https://developers.google.com/adwords/api/docs/appendix/reports/product-partition-report, provided by the Google Ads Script Team and they have also tried to help me in this matter.

The issue I am facing is that the first run of the script runs perfectly and creates a table in BQ and inserts the data as intended. However, when the script runs again (as sheduled 3 PM everyday) to get updated data from GoogleAds I get the following error message: API call to bigquery.tables.insert failed with error: Already Exists

The error message also provides the information that the issue is somewhere in this code:

table.tableReference = BigQuery.newTableReference(); table.tableReference.datasetId = CONFIG.BIGQUERY_DATASET_ID; table.tableReference.projectId = CONFIG.BIGQUERY_PROJECT_ID; table.tableReference.tableId = reportConfig.NAME; table = BigQuery.Tables.insert(table, CONFIG.BIGQUERY_PROJECT_ID,     CONFIG.BIGQUERY_DATASET_ID); 

But all this chunk of code is provided from the Google Ads Script Team so there should not be any problem with this?

So happy if someone could give me any guidance how to solve this!

Thanks in advance.