ビジネスパーソン・ガジェット置場 empty lot for business

営業や仕事、それに伴う生活を便利に楽にするツール、ガジェットを作ります。既にあるツールも自分用にカスタマイズ。

カレンダー一括投稿アプリ 【python + Google Calender api】

スプレッドシートやエクセルで管理しているスケジュールをGoogleカレンダーに一気に転記してしまうガジェットです。ものの数秒あれば転記完了です。一気に入力されるのでムッチャ気持ち良いです。

例えばこんな状況で

今回のガジェットはこういう声に対応
「ニュースあぷりなどはいろんな情報が溢れすぎていてついつい余計なものまで見てしまい、元々知りたかった情報がなんだっけってなります。自分の好きな情報だけまとめれるようになるといいなと」

 

このガジェットでできることはこちら

  • 今回のプログラムはエクセルで管理しているスケジューラーをグーグルカレンダーに転記します。
  • ものの数秒で転記終了します。

注意点はこちら

  • 今回の設定ではエクセル管理のシートで時間までは管理していなかったので時間は全て全て9:00で設定しました。
  • エクセルで時間まで管理している場合は少しコードを変えれば対応可能です。

評価(自己)

役立ち度  ★★★★★(最高)
効率化   ★★★★(良し)
ミス防止  ★★★★(良し)
楽しさ   ★★★★★(最高)
操作    ★★★★(良し)

 

実行環境

使用環境    Google Calender api 
使用言語    python
使用ライブラリ    datetime、googleapiclient.discovery、google.auth、json、pandas

 

コード

import datetime

import googleapiclient.discovery
import google.auth
import json
import pandas as pd

def main():
    SCOPES = ['https://www.googleapis.com/auth/calendar']

    creds = google.auth.load_credentials_from_file('secret.json', SCOPES)[0]

    service = googleapiclient.discovery.build('calendar', 'v3', credentials=creds)

    with open('info.json', 'r') as f:
        info = json.load(f)
    calender_id = info['calender_id']

    df = pd.read_excel('スケジュール.xlsx')
    df = df.dropna(axis=0).reset_index(drop=True)

    for i in range(len(df)):
        date = df['日'][i]
        detail = df['予定'][i]
        begin = datetime.datetime(date.year, date.month, date.day, 9)
        end = begin + datetime.timedelta(minutes=5)
        body = {
            'summary': f'{detail}',
            'start': {
                'dateTime': begin.isoformat(),
                'timeZone': 'Japan'
            },
            'end': {
                'dateTime': end.isoformat(),
                'timeZone': 'Japan'
            }
        }

        event = service.events().insert(calendarId=calender_id, body=body).execute()

if __name__ == '__main__':
    main()