ぴったり10秒を当てるゲームをGoogle Apps Scriptで作ってみました。
特にありません。スプレッドシートのコンテナバインド型プロジェクトとして作りました。
上のメニューにある「スクリプト実行」から「10秒ぴったりゲーム」を実行します。
開始のメッセージが表示されます。
OKを押すと計測がスタート、キャンセルを押すと何もせずにスクリプトが終了します。
「10秒たったと思ったらOKを押して!」とメッセージが表示されます。
OKを押すと・・・
実際に経過した時間と、成績に応じたメッセージが表示されます。
GASの実行速度はかなりムラがありますので、本当に10秒かどうかは怪しいです・・・。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00141/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('10秒ぴったりゲーム', 'just_10_seconds');
// メニューを画面に追加する
menu.addToUi();
}
function just_10_seconds() {
// メッセージを表示するためUIオブジェクトを取得
const ui = SpreadsheetApp.getUi();
// 開始のメッセージを表示
const prompt = ui.alert('10秒ぴったりゲームを始めます', 'OKを押すとスタートです!', ui.ButtonSet.OK_CANCEL);
// キャンセルボタンが押されたら処理を中止
if (prompt == ui.Button.CANCEL) {
return;
}
// 開始時点の時刻を取得。比較するのでgetTime()でミリ秒として取得。
const time_start = new Date().getTime();
// 終了時に押すボタンを表示する
ui.alert('10秒たったと思ったらOKを押して!', ui.ButtonSet.OK);
// 終了時点の時刻を取得
const time_end = new Date().getTime();
// 終了時刻から開始時刻を引いて所要時間を求める。ミリ秒なので1000で割って秒にする。
const time_result = (time_end - time_start) / 1000;
// 所要時間から10秒を引いて、差がどれだけあったか求める。マイナスになりうるので絶対値を取る。
let diff = Math.abs(time_result - 10);
// メッセージ表示用の変数
let message;
// 差の秒数に応じてメッセージを変える
if (diff == 0) {
message = 'ジャスト10秒! 本当に人間か?'
} else if (0 < diff && diff <= 0.5) {
message = '誤差0.5秒以内。すごい!';
} else if (0.5 < diff && diff <= 1) {
message = '誤差1秒以内。まあまあすごい!';
} else if (1 < diff && diff <= 2) {
message = '誤差2秒以内。フツーって感じ?';
} else if (2 < diff) {
message = 'ぴったりへの道は険しい・・・もっとがんばって!';
}
// 結果を画面表示
ui.alert('結果は' + time_result + '秒でした\n\n【コメント】\n' + message);
}