2022/02/22に更新

【GASで時短】九九の表を作成する

学習スプレッドシート

九九の表を出力するGoogle Apps Scriptです。なかなか使うことが無さそうですが、オリジナルの掛け算表を作ったりする時にどうぞ。何段でも出せたり逆順に出来たりとちょっと便利にしておきました。

こんな悩みを解決します


  • 九九の表を作りたくなったけど手動で作るのは割とめんどくさい(こんな悩みがあるかどうかはわかりません)。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


選択中のセルを起点に、掛け算の表を出力することが出来ます。
通常は9の段までですが、いくつの段でも出力が可能です。
逆順(N×9が一番上の行)の表も作れます。

使い方


1.スクリプトの実行

上のメニューに有る「スクリプト実行」から「九九の表を生成する」を実行します。

2.段数の入力

欲しい段数を半角整数で入力してください。
たとえば「12」と入力すると、1の段から12の段までが出力されます。

3.結果の確認

12の段までの掛け算表が出力されました。

4.逆順の九九の表

今度は逆順の表を出力してみます。
上のメニューに有る「スクリプト実行」から「九九の表(逆順)を生成する」を実行します。

5.結果の確認

N×9が一番上になった表が出力されました。

6.エラーメッセージ

段数の入力で「1以上の整数」以外が入力された場合は「段の数は1以上の半角整数を入力してください」とエラーメッセージが表示されて、スクリプトが終了します。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00048/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('九九の表を生成する', 'generate_kuku_standard');
  menu.addItem('九九の表(逆順)を生成する', 'generate_kuku_reverse');

  // メニューを画面に追加する
  menu.addToUi();
}

// メニューに登録した関数。引数をセットするためだけに包む
function generate_kuku_standard() {
  generate_kuku();
}

function generate_kuku_reverse() {
  generate_kuku('reverse');
}

function generate_kuku(option) {

  // UIを取得
  const ui = SpreadsheetApp.getUi();

  // アクティブなスプレッドシート、シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  const response = ui.prompt('何の段まで生成しますか?', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (response.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 出力する最大の段を取得
  const max_dan = parseInt(response.getResponseText());

  // 入力された値が数値ではない or 1未満の場合はエラーメッセージを表示して終了する
  if (!isFinite(max_dan) || max_dan < 1) {
    ui.alert('段の数は1以上の半角整数を入力してください');
    return;
  }

  // 掛け算表を格納する配列
  const result = [];

  // 掛け算を作成する
  for (let i = 1; i <= 9; i++) {

    result[i - 1] = [];

    for (let j = 1; j <= max_dan; j++) {

      result[i - 1].push(j + '×' + i + '=' + i * j);

    }
  }

  // 逆順が指定された場合はN×9を先頭にするため配列をreverseする
  if (option == 'reverse') {
    result.reverse();
  }

  // アクティブなセルを取得
  const active_cell = sheet.getActiveCell();

  // アクティブセルを起点に、掛け算表の縦(行)、横(列)分だけ範囲を指定する
  const range = sheet.getRange(active_cell.getRow(), active_cell.getColumn(), result.length, result[0].length);

  // 掛け算表をシートに書き込む
  range.setValues(result);

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp