古の時代、サイトにはアクセスカウンターが標準装備されていました。スプレッドシートに似たような機能を追加するGoogle Apps Scriptです。
特にありません。今お使いのスプレッドシートに組み込めます。
いつものようにスクリプトエディタにコピペしたら、トリガーを設定します。
以下のように設定をお願いします。
トリガーを設定したらスプレッドシートをリロードしてみてください。
カウンターが表示されるはずです(これはサンプルのためカウンターを進めています)。
同じ数字だけで構成されたアクセス数のときは、キリ番なのでメッセージが変わります。
1から9と0だけで構成されたアクセス数のときも、キリ番と扱います。
カウンターの数字はスクリプトプロパティに保存されています。
カウンターをクリアしたくなった場合は「initialize_counter」関数を実行してください。プロパティが削除され、1からカウントされるようになります。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00097/index.html
*/
function access_counter() {
// スクリプトプロパティにアクセスする
const script_property = PropertiesService.getScriptProperties();
// カウンターのデフォルト値をセット
let current_counter = 1;
// 「counter」という名前のスクリプトプロパティが存在すれば
if (script_property.getProperty('counter')) {
// 記録されているカウンターを取得する
let count = script_property.getProperty('counter');
// 今回アクセスした分を加算する
current_counter = Number(count) + 1;
// 加算した値をスクリプトプロパティへセットする
script_property.setProperty('counter', current_counter);
} else {
// 「counter」という名前のスクリプトプロパティが存在しない場合は、初期値をセットする
script_property.setProperty('counter', current_counter);
}
// キリ番の判定処理を行うため変数を定義する
let kiriban;
// カウンターの数字を配列に分割する
const counter_array = String(current_counter).split('');
// 数字が2桁以上なら
if (counter_array.length >= 2) {
// いったんキリ番とする
kiriban = true;
// 左端の桁と残りの桁が一致するかどうかチェックし、1つでも不一致ならキリ番ではないのでfalseをセットする
for (let i = 1; i < counter_array.length; i++) {
if (counter_array[0] != counter_array[i]) {
kiriban = false;
break;
}
}
// 「10000」など1から9と0だけで構成される数字もキリ番とする
if (String(current_counter).match(/^[1-9]0+$/)) {
kiriban = true;
}
} else {
// 1桁はキリ番にならないのでfalseとする
kiriban = false;
}
// 画面にアラートを表示するためにUIオブジェクトを取得
const ui = SpreadsheetApp.getUi();
// アクセスカウンターを表示する。キリ番かどうかで出し分ける
if (kiriban) {
ui.alert('あなたは' + current_counter + '番目のお客様です!\nキリ番を踏みましたね!');
} else {
ui.alert('あなたは' + current_counter + '番目のお客様です!');
}
}
function initialize_counter() {
// スクリプトプロパティにアクセスする
const script_property = PropertiesService.getScriptProperties();
// 「counter」のプロパティを削除する
script_property.deleteProperty('counter');
}