Совместное использование Google Sheet с учетными данными API - домен не найден - PullRequest
0 голосов
/ 25 февраля 2020

Я новичок, пытающийся получить доступ к листу Google через python gspread. Я выполняю следующие инструкции: https://towardsdatascience.com/accessing-google-spreadsheet-data-using-python-90a5bc214fd2.

Я считаю, что успешно создал свои учетные данные: survivor-points-update@update-survivor-gspread.iam.gserviceaccount.com. Когда я пытаюсь поделиться документом листов Google с этим письмом, я получаю ответ по электронной почте, в котором говорится, что доставка не удалась, поскольку домен не найден. Более конкретно:

DNS Error: 19491 DNS type 'mx' lookup of update-survivor-gspread.iam.gserviceaccount.com responded with code NXDOMAIN Domain name not found: update-survivor-gspread.iam.gserviceaccount.com

Я нашел эту альтернативу , но получил 401 error: The OAuth client was not found.:

client_id=<CLIENTID_FROM_GOOGLE_DEVLOPER_CONSOLE>
redirect_uri=http://localhost:8080/
scope=https://spreadsheets.google.com/feeds
access_type=offline
response_type=code

Я попытался настроить свои учетные данные a второй раз, но те тоже не работают. Заранее благодарен за любую помощь.

РЕДАКТИРОВАТЬ: На догадку я попытался поделиться другими документами с двумя учетными записями службы, и это не помогло.

РЕДАКТИРОВАТЬ 2: Я пробовал несколько различных настроек и областей, как это было предложено в git Hub Issue .

Мой основной код:

scope = ['https://spreadsheets.google.com/feeds']

creds = ServiceAccountCredentials.from_json_keyfile_name(cred_path, scope)
client = gspread.authorize(creds)

sheet = client.open(gsheet).sheet1

С этой областью я получаю следующую ошибку:

Traceback (most recent call last):
  File "<ipython-input-8-b2d4b9300652>", line 1, in <module>
    sheet = client.open(gsheet).sheet1
  File "C:\Users\User\Anaconda3\lib\site-packages\gspread\client.py", line 123, in open
    self.list_spreadsheet_files()
  File "C:\Users\User\Anaconda3\lib\site-packages\gspread\client.py", line 96, in list_spreadsheet_files
    res = self.request('get', url, params=params).json()
  File "C:\Users\User\Anaconda3\lib\site-packages\gspread\client.py", line 79, in request
    raise APIError(response)

APIError: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "Insufficient Permission: Request had insufficient authentication scopes."
   }
  ],
  "code": 403,
  "message": "Insufficient Permission: Request had insufficient authentication scopes."
 }
}

Если я изменю:

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

затем я получаю:

Traceback (most recent call last):
  File "C:\Users\User\Anaconda3\lib\site-packages\gspread\client.py", line 123, in open
    self.list_spreadsheet_files()
  File "C:\Users\User\Anaconda3\lib\site-packages\gspread\utils.py", line 37, in finditem
    return next((item for item in seq if func(item)))

StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<ipython-input-22-b2d4b9300652>", line 1, in <module>
    sheet = client.open(gsheet).sheet1
  File "C:\Users\User\Anaconda3\lib\site-packages\gspread\client.py", line 131, in open
    raise SpreadsheetNotFound

SpreadsheetNotFound

Я попытался включить API листов Google для обоих моих проектов и снова запустить код с обоими параметрами области.

Если я запустил client.openall() он возвращает только следующий список: [<Spreadsheet 'Access Rights Spreadsheet' id:1TwF6neGtogHAsqu4vjIiGWpfUPiQmVFgF5kR8k_8jC0>]

Есть ли другая область, которую я могу добавить, или API, который я могу включить?

РЕДАКТИРОВАТЬ 3: Я не знаю как [<Spreadsheet 'Access Rights Spreadsheet' id:1TwF6neGtogHAsqu4vjIiGWpfUPiQmVFgF5kR8k_8jC0>] поделились со мной. Я думал, что это был только один, который все имели.

Когда я запускаю это:

bk = client.open_by_key('1TwF6neGtogHAsqu4vjIiGWpfUPiQmVFgF5kR8k_8jC0')
sht = bk.get_worksheet(0)
l = sht.get_all_values()

l - пустой список. bk.worksheets() возвращает [<Worksheet 'Sheet1' id:0>], поэтому я не вижу никаких других данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...