Файл не найден при использовании функции gspread import_csv в python - PullRequest
0 голосов
/ 22 октября 2018

Я использую пакет gspread в Python.

Я пытаюсь импортировать CSV в электронную таблицу Google, но у меня появляется ошибка.

Мой код выглядит следующим образом:

import gspread
from oauth2client.service_account import ServiceAccountCredentials

spreadsheet_id = '1tFhK2-zebkG1fZFF6Xe5LHyONkh97ANOkcf'

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

creds = ServiceAccountCredentials.from_json_keyfile_name('./credentials.json', scopes=scopes)

client = gspread.authorize(creds)

file = open('test_csv.csv',mode='r')
csv = file.read()
file.close()

client.import_csv(spreadsheet_id, csv)

Ошибка, которую я получил:

---------------------------------------------------------------------------
APIError                                  Traceback (most recent call last)
<ipython-input-264-eb5d4ce7bc69> in <module>()
----> 1 client.import_csv(spreadsheet_id, csv)

~/anaconda3/lib/python3.6/site-packages/gspread/client.py in import_csv(self, file_id, data)
    238                 'convert': True
    239             },
--> 240             headers=headers
    241         )
    242 

~/anaconda3/lib/python3.6/site-packages/gspread/client.py in request(self, method, endpoint, params, data, json, files, headers)
     77             return response
     78         else:
---> 79             raise APIError(response)
     80 
     81     def list_spreadsheet_files(self):

APIError: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "notFound",
    "message": "File not found: 1tFhK2-zebkG1fZFF6Xe5LHyONkh97ANOkcf",
    "locationType": "other",
    "location": "file"
   }
  ],
  "code": 404,
  "message": "File not found: 1tFhK2-zebkG1fZFF6Xe5LHyONkh97ANOkcf"
 }
}

Однако при попытке чтения или записи непосредственно в ячейку я не получаю ошибку (например, с функцией update_cell), поэтому электронная таблица существуети я могу написать на нем.Именно import_csv вызывает ошибку.

Я создал страницу Google через веб-интерфейс Google Drive.Затем я добавил свой client_email с credential.json (blabla@blabla-220209.iam.gserviceaccount.com) в авторизованную почту таблицы.

Есть предложения?

1 Ответ

0 голосов
/ 28 марта 2019

Я исправил это, поделившись файлом с 'client_email', найденным в файле JSON учетных данных.Хотя я не проверял это, я также подозреваю, что публикация электронной таблицы в открытом доступе (любой пользователь в сети) сможет решить эту проблему.

Приветствия!

...