4

I keep getting a 404 error when trying to use the Apps Script Execution API. I've made sure that the project ID is correctly linked, and that the correct API is turned on.

This is the traceback I'm getting:

Traceback (most recent call last):
  File "", line 70, in main
    response = service.scripts().run(body=request, scriptId=SCRIPT_ID).execute()
  File "/oauth2client/util.py", line 137, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "apiclient/http.py", line 723, in execute
    raise HttpError(resp, content, uri=self.uri)
apiclient.errors.HttpError: <HttpError 404 when requesting https://script.googleapis.com/v1/scripts/ASFDQETWRQWEFAS12341234:run?alt=json returned "Requested entity was not found.">

This is the code I'm using:

SCOPES = ['https://mail.google.com/',
          'https://www.googleapis.com/auth/drive',
          'https://www.googleapis.com/auth/spreadsheets']

SCRIPT_ID = 'ASFDQETWRQWEFAS12341234'

CLIENT_SECRET = '/file/path'

def get_credentials():
  with open(CLIENT_SECRET, 'r') as f:
    content = json.load(f)
  credentials = client.SignedJwtAssertionCredentials(
      content['client_email'], content['private_key'].encode(), SCOPES)
  if hasattr(credentials, 'access_token'):
    if (hasattr(credentials, 'access_token_expired') and
        credentials.access_token_expired):
      http = httplib2.Http()
      credentials.refresh(http)
  return credentials

def main(unused_argv):
  credentials = get_credentials()
  http = credentials.authorize(httplib2.Http())
  service = build('script', 'v1', http=http)
  request = {
             'function': 'test',
             'devMode': True
            }
  response = service.scripts().run(body=request, scriptId=SCRIPT_ID).execute()
  if 'error' in response:
    raise AppsScriptError(response['error'])
  try:
    assert str(response['response']['result']) == 'Success!'
  except:
    raise AppsScriptError('Apps Script didn\'t complete successfully.')
ziganotschka
  • 25,866
  • 2
  • 16
  • 33
JStew
  • 437
  • 3
  • 7
  • 19

1 Answers1

1

It looks like you have to go to the script project, Publish > Deploy as API executable and choose Who has access to the script - Anyone.

D.Ginzbourg
  • 490
  • 7
  • 22