メモ

調べたり思いついたりしたことをメモします

Swarmの過去のチェックイン履歴をGoogleカレンダーに移行

少し前から Foursquare の Swarm アプリによるチェックイン履歴が Googleカレンダーに反映されなくなってしまいました。どうやら2019/03月頃に Foursquare のフィード が終了になってしまったとのことです。

とりいそぎフィードを使うのをやめてIFTTT経由でチェックイン時にGoogleカレンダーへ登録させるようにしたので問題はないのですが過去のチェックイン履歴も見えなくなってしまったので困りました。

しかたがないので Foursquare から履歴をエクスポートして、Googleカレンダーへインポートしてしまいました。手順をメモしておきます。

 

FoursquareへWebでログインし、「設定」ー>「プライバシー設定」に「自分のデータをエクスポート」というボタンがあります。これを使うと少し待たされますがデータをダウンロードできるリンクがメールで送られてきます。私の場合は約1日で来ました。

ダウンロードするとzip形式の中には幾つかの CSVJSON がありますが目的のものは "checkins.csv" です。これを展開します。

 

Googleカレンダーへそのままインポートできる形式ではなかったので変換が必要です。ここが一番面倒なところなのですが awk で変換してしまいました。

 

Googleカレンダーへ入れる情報

Google カレンダーへの予定の読み込み - カレンダー ヘルプ

詳細はこちらを参照。

必須ヘッダは Start Date, Start Time, Subject の3つですが、せっかくなので Location も入れておこうと思いました。ヘッダはこれを使います。

Start Date, Start Time, Subject, Location

 

FoursquareCSVを変換

checkins.csv の中身は下記構成です。

前から2カラム目(createdAt):日時情報
後から2カラム目(venue.url):URL
後から3カラム目(venue.name):チェックイン先の文字情報 

 チェックイン時にコメントを書いたかどうかで行によってカラムが異なります。

これちょっと衝撃的な仕様なのですがしかたありません。カラムの変動に影響を受けないように変換が必要です。

また、面倒なことに createdAt は unixtime で書かれています。年月日と時分 に分けてやらないといけません。

 

1.csv内の各ヘッダ行を削除する

"id","createdAt","type","timeZoneOffset"....  のようなヘッダが多数混ざり込んでいますのですっきり削除します。

awk -F ',' '! /\"id\"/' checkins.csv > work1

 

2.Googleカレンダーのヘッダに合わせて抽出する

こうやればcreatedAt , venue.name , venue.url の3つを取り出せました。

awk -F ',' '{print $2","$(NF-2)","$(NF-1);}' work1 > work2

 

3.csvの中から "" を削除する

viで開いて削除しました。お好きなエディタで一括置換しても同じだと思います。

viの場合はコマンドは、まあこんな感じです。

:%s/\"//g

 

4.unixtimeを変換する

"年/月/日 時:分" という形式に変換したかったのでこうしました。

awk -F ',' '{print strftime("%Y/%m/%d",$1)","strftime("%H:%M",$1)","$2","$3;}' work2 > fin.csv

 

5.最後にヘッダを先頭行に

このヘッダ行をファイル先頭にテキストエディタで書き込みます。

Start Date, Start Time, Subject, Location

これでインポート用のファイルは完成です。

 

Googleカレンダーへのインポート

WebからGoogleカレンダーへ行きます。「設定」の中に「インポート/エクスポート」というのがあるので、それを使って csv をアップロードしてカレンダーへインポートすることが出来ます。

私の場合は "Foursquare" という名前のカレンダーを予め新規で作っておき、そこへインポートしました。IFTTTでリアルタイムにチェックインを同期するのもこのカレンダーを指定しているので、見た目も色分け等できて綺麗です。