Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
EnebularMeetup_GoogleCalendar
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
NearMugi
June 03, 2022
Technology
320
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
430
nekoIoTLT_CatAndColorSensor
nearmugi
0
1k
220808_ねこトイレの変化を検知してみたかった話
nearmugi
0
13
VisualProgramming_GoogleHome_LINE
nearmugi
1
650
nekoIoTLT_ToyAndVoiceAnalysis
nearmugi
0
420
nekoIoTLT_Demachi
nearmugi
0
480
nekoIoTLT_SearchBlackObject
nearmugi
1
730
nekoIoTLT_nekoDeeplearning
nearmugi
0
370
nekoIoTLT_nekoGohan
nearmugi
0
590
Other Decks in Technology
See All in Technology
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
Refining Active Record
shugo
0
150
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1.1k
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
150
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
110
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.3k
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
190
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
4
540
Building an army of robots
kneath
307
47k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Mobile First: as difficult as doing things right
swwweet
225
10k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
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カレンダーのノードがあるといいな。。 以上となります。 ご清聴ありがとうございました。