PAGE TOP

取り組み

印刷する

トラッキングコードをgawkで埋め込む

さぼ郎
快速gawk

Googleアナリティクスというのにチャレンジしています。

1.Googleにアカウントを登録する
2.Googleアナリティクスにアカウントを登録する
3.トラッキングコードを設置

と、まるで別世界の言葉のようですが、ともかく言われるままに、やることをやったら「トラッキングコード」というのが取得できました。

トラッキングコード

<script async src="https://www.googletagmanager.com/gtag/js?id=
UA-24673506-3">script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'UA-24673506-3');
<script>
実際にはこんなコード。

で、早速、「浅草橋CMS」のHTMLに埋め込もうと思って、FTPを覗いたら、1,256ファイルもありました。

そこで、gawkの出番です。
gawk
コードのままエディタに入れると不都合があるようなので、画像にしてあります。

split(FILENAME,buff,".");
FILENAME」は予約語です。
コマンドラインから「*.html」のような渡し方をする場合、個々のファイル名が、この「FILENAME」で取得できます。
その「FILENAME」を「.」←(ピリオド)で分断して「buff」という名称の配列に取得します。
例えば、「123456.tmp」だとすると、
buff[1]には、「123456」
buff[2]には、「tmp」
が入ります。

※ awkはCライクな言語なのですが配列は「1」から始まります。
 「0」から始まるよりは、感覚的には馴染めるからなのだと思います。

ss=buff[1] ".html";
今回は、全てのファイルに対して拡張子を「tmp」にリネームしてあります。
よって、「123456」+「.html」が「ss」に入ります。
「+」とか「&」で繋ぐ必要がありません。並べて書くだけでconcatされます。

if($0~/<¥head>/){
取得した1行の中に「<¥head>」があれば、if文が成立します。
「/・・・/」の間に「/」があると正規表現を正式に認識できないので、headの前の「/」には「¥」でエスケープします。

同様に、print文で「"」でくくった中に文字としての「"」がある場合なども「¥"」のように「¥」コードでエスケープします。

整合した場合にはトラッキングコードの9行を出力してから、「<¥head>」を出力します。

整合しない場合には、取得した行データをそのまま(「$0」)出力します。

print $0>ss;
標準出力ではなく、ファイルに出力します。
FTPから落としてきた拡張子「html」を、「tmp」にリネームして「*.tmp」としてgawkに渡します。

ss」は、FILENAMEから拡張子を捨てて、新たに「.html」としたファイル名に出力をしています。

で、実行してみると、

ストップウォッチ

1,256のHTMLファイルに対してトラッキングコード9行を挿入するのに要した時間は、

たったの 4.84秒

でした。1ファイルあたりにして「0.003853503秒」。

挿入している9行を除くと、スクリプトらしい部分はたったの5行。スクリプト作っている時間はせいぜい10分でした。


早速、アナリティクスの表示されるようになりました。

1259

この記事の番号は「1259」なんですが、これを京都方面のヒトが見ているとアナリティクスが示しています。

次のステップは、新規訪問者をどうやって増やすか ですね。

今日は社員数総勢60余名の会社に訪問してきました。売上の半分がXML関係だそうで、残りは大量データの加工とかweb関連だそうです。

会議室には「文書管理」という実施例が掲載されていましたが、おそらくXMLなどの高度な技術を使って社内文書の適正化や効率化を図っているのだと思います。

ワタシ的に目指している「文書管理」は中央集権的なブロックチェーンを使った台帳管理を現在考えています。

紙文書と電子データをいかにしてハイブリッドで管理するかは、まだ思索中ですが、方向性が見つかったら試作してみようと思っています。

キーワード