JavaScript

ガルーンからGoogleカレンダーに同期する(GAS使用)

ガルーンからGoogleカレンダーに同期する(GAS使用)

Cybozuのガルーン(Garoon)はよくできたソフトウェアなのだが、他のサービスとの連携、という点では使いにくかった。

以前からSOAP APIはあったものの、繰り返し予定が難関で、実際の日にちを都度計算しなければならず、同期ツールの作成を断念していた。

だがREST APIが登場し、繰り返し予定が1件ずつ返されるようになってとても処理しやすくなったので、GASで動作するガルーンからGoogleカレンダーへの一方向同期スクリプトを作成した。

Garmin Connectでこれまでのすべてのアクティビティを一括ダウンロードする

Garmin Connectでこれまでのすべてのアクティビティを一括ダウンロードする

Garmin Connectがサイバー攻撃を受けてダウンした。

ランサムウェアにやられたらしい、ということで最悪の場合、これまでの記録が消えてしまう可能性がある。

幸いにもとりあえず復旧したようなので、これまでの全アクティビティをローカルにバックアップした。

GASのgoogle.script.runをPromise化する

GASのgoogle.script.runをPromise化する

GASでクライアント側のJavaScriptから、サーバ側のJavaScriptを呼び出す時、google.script.runを使用する。

ただこれは非同期処理でありながらPromiseを返さず、独自にwithSuccessHandlerwithFailureHandlerにコールバックを設定する必要があるので、ちょっと面倒。

ということで、Promise化するコードを作ってみた(V8エンジン限定)。

bxSliderで2番目以降の画像が一瞬表示されるのを防止する

もうjQueryも古いと言われているが、会社のウェブサイトでjQueryプラグインのbxSliderが使われている。 Google先生のPageSpeed Insightに注意されたとおり、レンダリングブロックするJavaScriptを後ろ(</body>直上)に配置したところ、 2枚目以降の画像が一瞬表示されてしまう現象が発生。 これはJSをレンダリングブロックしないように後ろに配置したり、

Google Analyticsで動画(Video要素)のイベントを計測

会社のウェブサイトに貼ってある動画ファイルが、実際にどれだけ再生されているのか調査するべく、 Google Analyticsのイベントで計測するためのコードを作ってみた。 計測対象は以下のイベント。 再生開始(play) 最後まで再生(ended) 一時停止(pause) 再生再開(resume) シークした(seeked) どこまで再生したか(動画時間の10%, 25%, 50%, 75%, 90%) HTML側 <video id="movie001" width="(動画幅)

Unicode制御文字(LRO, RLO)でコピー・改変を防止 (構想)

Unicode制御文字のうち、LRO(Left-to-right override, U+202D)とRLO(Right-to-left override, U+202E)は 行中でも文字列の方向を変更する。 1行の中に何度もLROとRLOが入ると、カーソルキーが踊って楽しいことになる。 例: 下のテキストボックスの中の文字列を編集したり、カーソルキーで移動しようとしても上手くできないはず。 ‮‭い‮を‭ろ‮る‭は‮ぬ‭に‮り‭ほ‮ち‭へ ‮‭わ‮
Windows標準機能でZIPファイルの作成

Windows標準機能でZIPファイルの作成

JScriptで複数のテキストファイルを書き出し、それをZIPでまとめたかったので作成。 VBAやVBScript版を参考に作ってみた。 参考サイト : http://kiq-creator.com/blog/?eid=33 複数のファイルをZIP圧縮する際のコツとしては、CopyHereをするたびに待機すること。 CopyHereは非同期なので、すぐにJS側に制御が返ってくるが、 複数のファイルを一気にCopyHereしようとすると、「読み取りできません」とエラーが出る。 使い