当前位置: 首页 > 知识库问答 >
问题:

检查google事件是否已经存在于google日历中

曾晨
2023-03-14

我想能够验证输入日期小时是否已经在谷歌日历中创建。

这是我得到的代码,但我现在被卡住了(谷歌快速入门教程)。这段代码给出了10个即将到来的事件。

但我希望能够输入一个日期,然后在添加之前验证事件是否已经存在。

from __future__ import print_function
import datetime
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/calendar']


def main():
    """Shows basic usage of the Google Calendar API.
    Prints the start and name of the next 10 events on the user's calendar.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('calendar', 'v3', credentials=creds)

    # Call the Calendar API
    now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
    print('Getting the upcoming 10 events')
    events_result = service.events().list(calendarId='primary', timeMin=now,
                                        maxResults=10, singleEvents=True,
                                        orderBy='startTime').execute()
    events = events_result.get('items', [])

    if not events:
        print('No upcoming events found.')
    for event in events:
        start = event['start'].get('dateTime', event['start'].get('date'))
        print(start, event['summary'], event['location'])


if __name__ == '__main__':
    main()



编辑:

我尝试了这个代码,但是我得到了一个错误。

events_result = service.events().list(calendarId='primary', timeMin="2020-04-22T10:00:00-00:00",
                                          timeMax="2020-04-22T12:00:00-00:00",
                                          singleEvents=True,
                                          orderBy='startTime').execute()
    events = events_result.get('items', [])

    if not events:
        print('Event does not exist yet.')
    else:
        for event in events:
            start = event['start'].get('dateTime', event['start'].get('date'))
            if start == "2020-04-22T11:00:00-00:00":
                found = True
                print('Event has been found.')
                break
        if found != True:
            print('Event does not exist yet.')

获取时出错:

Traceback (most recent call last):
  File "/Users/cn/PycharmProjects/Calendrier/venv/quickstart.py", line 61, in <module>
    main()
  File "/Users/cn/PycharmProjects/Calendrier/venv/quickstart.py", line 56, in main
    if found != True:
UnboundLocalError: local variable 'found' referenced before assignment

共有1个答案

南宫胡媚
2023-03-14

说明:

timeMax:要筛选的事件开始时间的上限(独占)。

timeMin:要筛选的事件结束时间的下限(独占)。

  • 不幸的是,这些参数不允许您直接找到您要查找的确切日期和时间,但您可以使用它们尽可能缩小结果列表的范围(了解事件摘要也会有很大帮助!)
  • 一旦你有了一个所有可能结果的列表,你就需要遍历它们,并为每一个event['start']进行验证。get('dateTime',event['start'])。get('date')等于您要查找的

样本片段

events_result = service.events().list(calendarId='primary', timeMin=now, 
                                        timeMax="Specify if possible",
                                        singleEvents=True,
                                        orderBy='startTime').execute()
    events = events_result.get('items', [])

    if not events:
        print('Event does not exist yet.')
    else:
        found = False
        for event in events:
            start = event['start'].get('dateTime', event['start'].get('date'))
            if start == "SPECIFY HERE THE DATE YOU ARE LOOKING FOR":
                found = True
                print('Event has been found.')
                break
        if found != True:
            print('Event does not exist yet.')

 类似资料:
  • 我有两张表,都有保存到列中的日期。我的当前日期以相同代码保存在Sheet1和Sheet2上: 我想让我的一个脚本比较从Sheet1到Sheet2的日期 在Sheet1上,我使用一个小脚本设置当前日期,然后使用拖动功能设置列中的上一个和下一个日期,格式与此处相同: 设置Sheet1上的日期后,我使用以下脚本比较Sheet1和Sheet2中的日期,此脚本还设置Sheet2的日期,因为当激活此脚本时,它

  • 问题内容: 在我的应用程序中,我需要检查firebase上数据库的给定元素是否有一个具有给定名称的孩子。我希望可以通过以下方式来做到这一点: 我进行了搜索,但找不到任何有用的信息。 问题答案: 编辑2; 值得放在最上面:我认为值得一提的是,它实际上是在此快照中下载所有数据,只是为了检查是否存在任何数据。您在这里要小心。如果引用很大(例如, 实际上 是根引用,而不是特定的子项/属性),则您应该找到可

  • 如果文档ID不存在,我想将数据添加到firestore数据库中。到目前为止,我一直在尝试: 目标是检查数据库中的所有文档ID,并查看与“varuId”变量的任何匹配。如果匹配,则不会创建文档。如果不匹配,它应该创建一个新文档

  • 我是Google日历API和PHP的新手,我似乎不知道如何实现我想做的事情。基本上,我想从calendarID为的google日历中检索事件webapps098@gmail.com.我当前的代码是这样的 我收到错误: 异常Google_ServiceException消息错误调用GEThttps://www.googleapis.com/calendar/v3/calendars/webapps0

  • 我想知道如何使用新的Google Drive Android API检查Google Drive中是否存在文件夹 我试过下面的操作,以为如果找不到文件夹,它要么崩溃,要么返回null,但它没有这样做(只要它是有效的DriveId,即使文件夹已被删除)。 如果我尝试创建一个文件,我从上面的代码得到的文件夹,它也不会崩溃?显然,我很难理解这个新的API是如何协同工作的,特别是在非常有限的教程和问题的情

  • 问题内容: 检查google-app-engine数据存储区中是否存在实体的最佳/最快方法是什么?现在,我正在尝试通过键获取实体,并检查get()是否返回错误。 我不知道在数据存储区上获取实体的过程。有没有更快速的方法来仅执行此检查? 问题答案: 已不推荐使用App Engine GCS客户端。 您是否考虑过使用查询?猜测并检查不是一种可伸缩的方法来找出数据存储中是否存在实体。可以创建查询以从数据