googleworkspace / python-samples

🐍 Python samples for Google Workspace APIs
Apache License 2.0
1.2k stars 894 forks source link

googleapiclient.errors.UnknownApiNameOrVersion: name: script version: v1 #194

Open robguinness opened 3 years ago

robguinness commented 3 years ago

Expected Behavior

The quickstart.py example (https://developers.google.com/apps-script/api/quickstart/python) should run successfully.

Actual Behavior

Exits with the following error:

Traceback (most recent call last):
  File "quickstart.py", line 83, in <module>
    main()
  File "quickstart.py", line 53, in main
    service = build('script', 'v1', credentials=creds)
  File "/home/rob/.venv/lib/python3.8/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/home/rob/.venv/lib/python3.8/site-packages/googleapiclient/discovery.py", line 273, in build
    content = _retrieve_discovery_doc(
  File "/home/rob/.venv/lib/python3.8/site-packages/googleapiclient/discovery.py", line 387, in _retrieve_discovery_doc
    raise UnknownApiNameOrVersion("name: %s  version: %s" % (serviceName, version))
googleapiclient.errors.UnknownApiNameOrVersion: name: script  version: v1

Steps to Reproduce the Problem

  1. Follow the steps at https://developers.google.com/apps-script/api/quickstart/python

Specifications

robguinness commented 3 years ago

I dug a bit deeper, and it seems that static_discovery is not working properly. From the docstring of _retrieve_discovery_doc in googleapiclient/discovery.py:

    static_discovery: Boolean, whether or not to use the static discovery docs
      included in the library.

This path where it is trying to look for the discovery doc does not exist. Is I change the default value of static_discovery to False, then the discovery doc is retrieved from the URL, and everything works fine.

adrianbn commented 3 years ago

This happens with the drive API as well. As @robguinness says, if I pass static_discovery=False to the build call it works fine. Here's the original stack trace:

Traceback (most recent call last):
  File "/Users/adrian/code/erd-watcher/__main__.py", line 109, in <module>
    gdrive_erds(last_check)
  File "/Users/adrian/code/erd-watcher/__main__.py", line 86, in gdrive_erds
    service = build('drive', 'v3', credentials=creds)
  File "/Users/adrian/Library/Caches/pypoetry/virtualenvs/erd-watcher-EyFrJG54-py3.9/lib/python3.9/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/Users/adrian/Library/Caches/pypoetry/virtualenvs/erd-watcher-EyFrJG54-py3.9/lib/python3.9/site-packages/googleapiclient/discovery.py", line 272, in build
    content = _retrieve_discovery_doc(
  File "/Users/adrian/Library/Caches/pypoetry/virtualenvs/erd-watcher-EyFrJG54-py3.9/lib/python3.9/site-packages/googleapiclient/discovery.py", line 386, in _retrieve_discovery_doc
    raise UnknownApiNameOrVersion("name: %s  version: %s" % (serviceName, version))

This works:

build('drive', 'v3', credentials=creds, static_discovery=False)