WorkFlowyのトピック更新日時を表示するブックマークレット LastTime

WorkFlowyの検索で「last-changed:1d」とすると、この1日以内に更新されたトピックを列挙します。つまり、タイムスタンプを持っている。ところが、iPhone/iPadでは直接それを確かめる方法がない。意外と重要な情報だと思うのですが、用意されていない。
ならばSafariブックマークレットで、という小品です。


LastTime

HTML内には更新日時の情報がありません。なので、非公開APIから全体シートを取得してURLアドレスと照合する方法を取りました。ちょっと時間が掛かる。

javascript:(function(){url="https://workflowy.com/get_initialization_data";q=new XMLHttpRequest();q.open("get",url,false);q.send(null);data=q.responseText.replace(/\"no\":\"(.+?)\",\"id\":/g,"\"id\":").split("{");begin=Number(new Date(2013,1,14,0,31));id=location.href.replace(/(.+?)#\/(.+?)$/,"$2");e=new RegExp("\"lm\":(.+?),\"id\":\"(.+?)-"+id,"mi");s="???";for(i=0;i<data.length;i++) if(data[i].match(e)) s=new Date(Number(RegExp.$1)*60000+begin).toLocaleString().replace(/ JST/,"");alert("- Last Time -\n\n"+s);})();
登録リンクはこちら→ http://tinyurl.com/hpwoyyh


力技

JSON内の"lm"が"last modified"の略号だな、とは気づいたものの、いつの日付を起点としているか、わからなかった。でも十年日記のトピックと格闘しているうちに「2013年1月14日0時31分」が零点であろうと推測しました。WorkFlowyが世界で最初に起動した時刻を「0」とし、そこからの経過時間を分単位で"lm"に記録している。そういう推理で更新日時を表示します。ぜんぜん根拠がないから、まったく違うかもしれない。


観測史上初

すでに誰か作ってないか、ネット上を調べてみましたが無さそうです。非公開APIを使っている人も「lm」までは手を出していない。起点が不明だから計算しようがなかったのでしょう。ええ、ふつう無理ですよ。我ながら、よく作ったものだ。動くのが不思議。