0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GASのWEBアプリケーションでUAをスプレッドシートにロギングして簡易アクセスログ

Last updated at Posted at 2019-10-25

三行で

  • UiApp.getUserAgent()(UiAPP)は廃止されHtmlService.getUserAgent()
  • IPはアクセス時点では取得できそうにない
  • スプレッドシートの年日でgroup byする方法が不明

アクセスみたい

ウェブアプリケーションとして公開したapps scriptのアクセスは、
doGetの自分以外による実行数を見ればぼんやりとわかります。

gas.JPG

でももうちょっとユニーク数を詳しく知りたいときが出たりするので、手軽な識別方法はないかなと考えました。

調べてみると、
GoogleAppsScriptでのあれやこれや - gstudio - blog
UserAgentを取得できるようなので、これでUAのユニーク数が最低限の利用者数だということができそうです。
短時間の連続実行も別々の人なのか同一の人のリロードなのかもなんとなくわかりますしね。

というわけでvar app = UiApp.createApplication();を追加しましたが動きません。

UiAppは廃止されたのでHtmlServiceを使うようです

Class HtmlService | Apps Script | Google Developers#getUserAgent()

というわけでこんな風に

function doGet() {
  const ua = HtmlService.getUserAgent();
  if (ua) {
    var as = getSheet(ACCESS_LOG_SHEET_NAME);
    as.appendRow([Utilities.formatDate(new Date(),  'Asia/Tokyo', 'yyyy年MM月dd日 HH:mm:ss'), ua]);
  }
  var htmlOutput = HtmlService.createTemplateFromFile("template").evaluate();
  htmlOutput.setTitle(WEB_TITLE);
  return htmlOutput;
}

レスポンスに悪影響がでる書き方ですが、スプレッドシートが短い現在は目立った処理速度の低下は見られませんでした。

ifにしてるのはエディターから直接実行した場合などを考えてますが、特に必要ではないはず。

問題点としては、ヘッダーとして公開しているウェブアプリか(/exec)、最新バージョンでの動作の確認か(/dev)見分けが付いてないということでしょうか。
解決策はあるかもしれませんが、些細な問題なので現状スルーで。

gas2.JPG

UAのユニーク数チェックには別シートに
=QUERY('アクセスログ'!B:B,ʺselect count(B), B group by Bʺ)
とすると何種類のUAがあるのかがわかります。

できれば日ごとのアクセス数も集計したいのですが、日付フィールドの時間を切り捨てて年月日だけで集計する方法がわからず…SQLの不勉強さがたたっていますね…

IPは?

Retrieve Public IP From Google Web App - Stack Overflow

doGetの中で取得する方法は見つからなかったので、クライアント側で取得してdoPostに投げてロギングする方法などが考えられますね。
そこまでするならAnalyticsを乗っけたほうが早い気がしますが、doGetがすばやくなるのでもろもろをクライアント側とdoPostでやっちゃうことは覚えていてもいいかなと。
非同期で処理できますし。


使ってみたら意外とモバイルからのアクセスがあったりでそっちの動作確認していないなと気づきを得られたりでよかったです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?