Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EnebularMeetup_GoogleCalendar
Search
NearMugi
June 03, 2022
Technology
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EnebularMeetup_GoogleCalendar
NearMugi
June 03, 2022
More Decks by NearMugi
See All by NearMugi
nekoIoTLT_NearMugiLLM
nearmugi
0
420
nekoIoTLT_CatAndColorSensor
nearmugi
0
980
VisualProgramming_GoogleHome_LINE
nearmugi
1
630
nekoIoTLT_ToyAndVoiceAnalysis
nearmugi
0
410
nekoIoTLT_Demachi
nearmugi
0
470
nekoIoTLT_SearchBlackObject
nearmugi
1
710
nekoIoTLT_nekoDeeplearning
nearmugi
0
360
nekoIoTLT_nekoGohan
nearmugi
0
580
nekoIoTLT_Tsumetogi
nearmugi
1
750
Other Decks in Technology
See All in Technology
SnowflakeCoCoでデータエンジニアリング!
foursue
0
120
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
170
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
1
790
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
250
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
2.1k
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
330
AIエージェントに財布を渡す日 ― 承認付き"買い物エージェント"を作って実演
yama3133
1
110
AI エージェント時代のデジタルアイデンティティ
fujie
2
1.3k
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
270
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
530
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
7
3.1k
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
1
280
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
430
Making the Leap to Tech Lead
cromwellryan
135
10k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
190
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
280
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
定期的な予定をGoogleカレンダーへ 簡単に追加できる仕組みを作ってみた 2022.06.02 【オンライン】enebular developer meetup
自己紹介 NearMugi(ニアムギ) 普段はねこIoTLTで活動しています。 ねこ2匹飼っています。
イントロ 今回は「定期的な予定をGoogleカレンダーへ 簡単に追加できる仕組みを作ってみた」お話で す
イントロ 我が家では定期的な予定(例えば子どもの迎えの担当)を Googleカレンダーを使って家族で共有しています。
イントロ そこで妻より・・・ ・Googleカレンダーの予定をコピーするのが面倒 ・簡単にコピーできる方法ない?
イントロ 確かに手間がかかります ・コピーしたい予定をクリック ・複製を選択 ・日付を変更 ・保存
イントロ 簡単に複製する機能はなさそうだったため、作ってみました
仕組みの概要 入力を簡単にするため、スプレッドシートにある情報を Googleカレンダーへ自動で反映させるようにしました 一つ一つ予定を入れるよりも楽!
仕組みの概要 ただ、スプレッドシートを開いて編集するのも手間なので AppSheetを使ってLINEから入力できるようにしています。
仕組みの概要 全体像はこんな感じです ① ② ③ ④ ①LINEからSpreadSheetへ ②Cronで定期的に取得 ③カレンダー情報と比較 ④カレンダーを更新
Node-RED の部分 Node-REDのフローは以下の通りです。 1. Googleカレンダーの情報を取得 2. スプレッドシートの情報を取得 3. 差分(追加/更新/削除)を判別 4.
Googleカレンダーへ反映
Node-RED の部分 1. Googleカレンダーの情報を取得 Googleカレンダーへアクセスするノードがありませんでした・・ そのためPython + execノードで処理しています
Node-RED の部分 (補足)Googleカレンダーにアクセスするソースについて 取得(Get)・追加(Insert)・更新(Update)・削除(Delete)を指定する テキストファイルを渡すと、いい感じに処理してくれるプログラムを用意しました 1文字目がG の場合は Googleカレンダーの情報をGetする
Node-RED の部分 追加・更新・削除の場合 同じように1文字目が I の場合は追加 Uの場合は更新 Dの場合は削除 となります。
Node-RED の部分 2. スプレッドシートの情報を取得 スプレッドシートはノードがあるので、簡単にデータを取得できます
Node-RED の部分 3. 差分(追加/更新/削除)を判別 ここが一番の難関でした。 判別のルールは以下の通りです。 スプレッドシート : o ,
Googleカレンダー : x -> 追加 スプレッドシート : o , Googleカレンダー : o(完全一致) -> スキップ スプレッドシート : o , Googleカレンダー : o(一部差分) -> 更新 スプレッドシート : x , Googleカレンダー : o -> 削除
Node-RED の部分 比較できるようにGoogleカレンダーのデータと、スプレッドシートのデータを整形しま す 取得したGoogleカレンダーのデータ こんな感じに整形
Node-RED の部分 どのように整形しているかというと、splitノードで1行ずつ読み、jsonata形式でコネコ ネしてファイルに出力しています
Node-RED の部分 スプレッドシートのデータも同様に整形していきます 取得したスプレッドシートのデータ こんな感じに整形
Node-RED の部分 Googleカレンダーと違い、1行目がヘッダーであること、途中に空白行があることに注 意して整形します。 取得したデータ スプレッドシート
Node-RED の部分 整形の考え方はGoogleカレンダーとやり方は同じです ヘッダーや空白行はスキップします
Node-RED の部分 データの形式は揃ったのであとは比較するだけです。
Node-RED の部分 整形のときと同じようにsplitノードやchangeノードで比較・・・ したかったのですが断念しました・・・ 日付のあり/なしで追加と削除は出来そうかなと思ったのですが 更新を判定するには他の項目(summaryなど)もチェックするので お手上げでした。
Node-RED の部分 そのため、比較用のプログラムを用意して解決しました Pythonでは素直に出来ました
Node-RED の部分 4. Googleカレンダーへ反映 すでに材料と道具が揃っています。比較した結果をプログラムに渡してあげればOKです。
まとめ ・データの読み込み・比較・書き込みといったお勉強のようなシステム 作りでした。 ・Googleカレンダーのノードがあるといいな。。 以上となります。 ご清聴ありがとうございました。