Создание Сервисного объекта Календаря Google с Сервисной Учетной записью - PullRequest
0 голосов
/ 24 октября 2018

Как бы я ни просматривал документацию от Google, мне трудно понять, как создать сервисный объект, который позволит мне управлять своим Календарем Google через сервисную учетную запись.Вот мой код:

SCOPES = ['https://www.googleapis.com/auth/calendar']
SERVICE_ACCOUNT_FILE = 'service_account_credentials.json'

credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)

CAL = build('calendar', 'v3', credentials=credentials)

EVENT = {
    'summary': 'TEST EVENT',
    'start': {
        'dateTime': '2018-10-24T01:00:00-07:00',
        'timeZone': 'America/Denver'
    },
    'end': {
        'dateTime': '2018-10-24T02:00:00-07:00',
        'timeZone': 'America/Denver'
    }
}

CAL.event().insert(calendarId='primary', body=EVENT).execute()

Когда я запускаю этот код, я получаю эту ошибку:

Traceback (most recent call last):
  File "file.py", line 55, in <module>
    CAL.event().insert(calendarId=TEST_CALENDAR, body=EVENT).execute()
AttributeError: 'Resource' object has no attribute 'event'

Когда я создаю объект CAL, он создает такой объект: <googleapiclient.discovery.Resource object at 0x00000249A24BB978>, но я предполагаю создать какой-то другой объект, который имеет метод events().insert(), который я затем смогу использовать для публикации событий в моем Календаре Google.

Есть идеи, как это сделать?Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, что ваш сценарий почти правильный.Но для этого необходимо сделать небольшую модификацию.Так как насчет этой модификации?

From:

CAL.event().insert(calendarId='primary', body=EVENT).execute()

To:

CAL.events().insert(calendarId='primary', body=EVENT).execute()

Примечание:

  • В вашем скрипте этоиспользует учетную запись службы.В этом случае календарь primary означает, что владельцем календаря является учетная запись службы.
  • Когда события добавляются в primary учетной записью службы, она вставляется в календарь учетной записи службы.,- Если вы хотите вставить события в существующие календари, которые не относятся к учетной записи службы, добавьте адрес электронной почты учетной записи службы в календарь в качестве одного из общих пользователей.
    • Если вы хотите вставить события в свой календарь, используя учетную запись службы, добавьте адрес электронной почты учетной записи службы в свой календарь как один из общих пользователей.Затем измените идентификатор календаря (в данном случае это не primary.) И запустите сценарий.

Ссылка:

Если это не то, что вы хотите, извините.

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