Как создать Google Sheets с использованием учетных данных учетной записи в Python? - PullRequest
0 голосов
/ 16 марта 2020

Я создал Service Account Credentials здесь и получил json ключ service.json.

Затем я попытался:

from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
credentials = service_account.Credentials.from_service_account_file(
        'service.json', scopes=SCOPES)

drive = build('drive', 'v3', credentials=credentials)
file_metadata = {
    'name': 'sampleName',
    'parents': ['#### folderId ###'],
    'mimeType': 'application/vnd.google-apps.spreadsheet',
}
res = drive.files().create(body=file_metadata).execute()
print(res)

С ошибкой:

<HttpError 403 when requesting https://www.googleapis.com/drive/v3/files?alt=json returned "Insufficient Permission: Request had insufficient authentication scopes.">

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
}

Я обнаружил, что без заголовка Auth я анонимен, и квота для анонимного использования равна нулю. Как я могу установить заголовок или причина этой ошибки в чем-то другом?

Все, что я хочу, - это создать электронную таблицу с python в моей папке gdrive с любого компьютера без необходимости щелкать где-нибудь, чтобы предоставить доступ.

1 Ответ

2 голосов
/ 16 марта 2020
  • Вы хотите создать новую электронную таблицу с помощью Drive API v3 с учетной записью службы.
  • Вы хотите создать новую электронную таблицу в указанной папке c на Google Диске своей учетной записи Google. .
  • Вы хотите добиться этого с помощью googleapis с python.
  • Вы уже можете использовать Drive API.

Если я понимаю правильно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точка модификации:

  • Я думаю, что в вашем скрипте необходимо изменить область видимости для создания файла с Диска API. В этом случае, как насчет использования https://www.googleapis.com/auth/drive?
  • Чтобы создать новую электронную таблицу в указанной папке c на Google Диске вашей учетной записи Google, сначала необходимо предоставить общий доступ. папка на вашем Google Диске с адресом электронной почты учетной записи службы. Таким образом, новая электронная таблица создается с учетной записью службы в указанной папке c вашего Google Диска. Пожалуйста, будьте осторожны.

Модифицированный скрипт:

Когда ваш скрипт модифицирован, пожалуйста, измените его следующим образом.

from googleapiclient.discovery import build  # Added
from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/drive']  # Modified
credentials = service_account.Credentials.from_service_account_file('service.json', scopes=SCOPES)

drive = build('drive', 'v3', credentials=credentials)
file_metadata = {
    'name': 'sampleName',
    'parents': ['#### folderId ###'],
    'mimeType': 'application/vnd.google-apps.spreadsheet',
}
res = drive.files().create(body=file_metadata).execute()
print(res)
  • О #### folderId ###, пожалуйста, укажите идентификатор папки, к которому предоставлен адрес электронной почты учетной записи службы.

Примечание:

  • Если вы хотите использовать Sheets API и Drive API Пожалуйста, используйте SCOPES = ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets"].
  • . В этом случае новая электронная таблица создается непосредственно в папке на вашем Google Диске. Так что вы можете увидеть это в браузере.
    • Если новая электронная таблица создается в папке на Диске служебной учетной записи, необходимо создать разрешение для вашей учетной записи Google. Пожалуйста, будьте осторожны с этим. В этом случае, я думаю, что эта тема полезна.

Ссылки:

Если я неправильно понял ваш вопрос и это не то направление, которое вам нужно, я приношу свои извинения.

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