【伺か/SSP】グーグルカレンダー読み取り機能をゴーストに実装する。
ukagaka出来るようになること
誰でもゴーストを経由してグーグルカレンダーの予定にアクセスできるようになる。
認証用jsonファイルの取得方法
事前準備として必要なモノがあります。
こちらをご確認ください。
【伺か/SSP】ゴーストとグーグルカレンダーを連携させ、今日の予定を教えてもらう。 — 異風堂々
実装済みのゴースト
GitHub – ambergon/ukagakaGhost_sizukanaDanran
ゴーストに実装する
使用するもの
yaya及びproxy_exを使用する。
Release SAORI : proxy_ex v1.0.2 · ukatech/csaori · GitHub
SAORI-BASIC/GoogleCalendar連携用
ambergon/ukagakaExe_GoogleCalendar · GitHub
ファイル構成
dllフォルダを作ってこのように管理している。
ghost
└─master
├─yaya.dll
└─dll
├─proxy_ex.dll
└─ukagakaExe_getGoogleCalendar.exe
サンプルコード
引数は以下の通りになります。
- 認証用jsonファイルのパス
- gmailアドレス
- “day” or “week”
- タイムゾーン
- 改行用文字列
proxy_exは最初の一行のみを拾うため、区切り文字でくっつけて後で複数行に戻しています。
FUNCTIONEX("./dll/proxy_ex.dll" , "/charset" , "UTF-8" )
_day = FUNCTIONEX( "./dll/proxy_ex.dll", "./ukagakaExe_getGoogleCalendar.exe" ,"jsonが保存されている絶対パス","xxx@gmail.com","day or week", "timezone" , "区切り文字" )
_day = REPLACE( _day , "区切り文字" , "\n" )
_day
実際に使用しているコード
一部変更している。
既存のイベントとしてOnFileDropped
を使用しているので競合に注意してください。
//呼び出し用メニュー
CalendarMenu {
"\_q\n[half]/
【 Googleカレンダー 】\n/
\![*]\q[同期するGmailのメールアドレスを指定する,OnSetCalendarGmailAddress]\n/
\![*]\q[今日の予定を確認する,OnGetCalendar,day]\n/
\![*]\q[今週の予定を確認する,OnGetCalendar,week]\n/
\![*]\q[設定方法を確認する,OnHowToCalendar]\n/
\n[half]\e"
}
OnSetCalendarGmailAddress {
"@gmail.comまで入力してね。\![open,inputbox,OnInputYourGmailAddress]"
}
OnInputYourGmailAddress {
YourGmailAddress = reference[0]
"%(YourGmailAddress)だね。登録したよ。"
//YourGmailAddress = "@gmail.com"
}
OnGetCalendar {
//関数としても実行可能なようにする。
_target = ""
if _argc != 0 {
_target = _argv[0]
} else {
_target = reference[0]
}
_sep = "---"
if ( ISVAR( "YourGmailAddress" ) == 0 ){
"Gmailが設定されていないよ。"
} elseif ( ISVAR( "GoogleCalendarJson" ) == 0 ){
"GoogleCalendarJsonが設定されていないよ。D&Dしてね。"
} else {
FUNCTIONEX("./dll/proxy_ex.dll" , "/charset" , "UTF-8" )
_day = FUNCTIONEX( "./dll/proxy_ex.dll", "./ukagakaExe_getGoogleCalendar.exe" ,GoogleCalendarJson, YourGmailAddress , _target , "-9" , _sep )
_day = REPLACE( _day , _sep , "\n" )
if _day == "" {
"\1貴方は手帳を開いた。\0何も書かれていなかった。"
} else {
"\1貴方は手帳を開いた。\0\_q\b[2]%( _day )\_q"
}
}
}
OnHowToCalendar {
"\j[https://ambergonslibrary.com/ukagaka/8900/]"
}
OnFileDropped {
_FILE = REPLACE( reference[0], '\' , '/' )
if ( RE_SEARCH(_FILE, "json$") ) {
SetJsonConfig( _FILE )
}
}
SetJsonConfig {
_PATH = _argv[0]
"\b[2]\_q\n[half]/
%( _PATH )\n/
\![*]\q[ GoogleCalendarJsonを設定する ,OnSetJsonFile,%( _PATH ),GoogleCalendarJson]\n/
\n[half]\e"
}
OnSetJsonFile {
_PATH = reference[0]
_Name = reference[1]
EVAL( _Name + ' = "' + _PATH + '"' )
"%( _Name ) の設定ファイルは %( _PATH ) だね。"
}
製作動機
ゴーストを起動しているとき、間違いなく家についています。
今まで机につくと、手帳を確認して明日の予定に合わせて準備などをしていたわけですが、その辺をゴーストに任せてみました。
。。。有能メイドゴーストとか出てきてほしいですね。
参考
maxResults/timeMax/timeMin
google-api-go-client/calendar-api.json at main · googleapis/google-api-go-client · GitHub