2022/06/18に更新

【GASで時短】半角数字を全角数字に変換する

スプレッドシート小技

半角で入力された数字を全角の数字に変換するGoogle Apps Scriptです。全角→半角版を作ったので逆バージョンも作りました。全角にしたい人は・・・少なそうな気もしますが・・・

こんな悩みを解決します


  • 半角数字を全角に変換したい!
  • 半角全角が混ざっていて気持ち悪い!

用意するもの


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

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


  • 指定したセル範囲にある「半角数字」を「全角数字」に変換することができます。

使い方


1.データの準備

半角数字と全角数字が含まれる適当なデータを用意しました。
このスクリプトは選択中のセルに対して動作しますので、変換したい範囲を選択します。
全体を処理したいならシート全体を選択すればOKです。

2.スクリプトの実行

上のメニューにある「スクリプト実行」から「半角数字を全角数字に変換する」を実行します。

「選択範囲にある「半角数字」を「全角数字」に変換します。よろしいですか?」と聞かれますので、問題なければOKを押します。
キャンセルを押した場合はスクリプトが終了します。

3.結果の確認

しばらく待つと変換が完了します。ぜんぶ全角になってしまいました(私は半角数字派)。

4.注意点

処理としてはセルの値を入れ直しているため、入力されている数式は消えてしまいます。
変換したい範囲に、数式が入っていないかどうかご確認ください。

スクリプト


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

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

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

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

  // メニューに追加するボタン
  menu.addItem('半角数字を全角数字に変換する', 'convert_digit_hankaku_to_zenkaku');

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

}


function convert_digit_hankaku_to_zenkaku() {

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

  // 実行を確認する
  const response = ui.alert('選択範囲にある「半角数字」を「全角数字」に変換します。\n入力されている数式は失われる場合があります。\nよろしいですか?', ui.ButtonSet.OK_CANCEL);

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

  // 現在開いているスプレッドシートオブジェクトを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // 開いているシートオブジェクトを取得
  const sheet = ss.getActiveSheet();

  // 変換用の半角数字リストを準備
  const hankaku = ['0','1','2','3','4','5','6','7','8','9'];

  // 変換用の全角数字リストを準備
  const zenkaku = ['0','1','2','3','4','5','6','7','8','9'];

  // 選択中のrangeオブジェクトを取得
  const range = sheet.getActiveRange();

  // 選択中セルの値を取得
  const values = range.getValues();

  // 取得したセルを1つずつループして変換していく
  for (let i = 0; i < values.length; i++) { // 行のループ

    for (let j = 0; j < values[i].length; j++) {// 列のループ

      // セルの文字1文字ずつ分割して配列にする。数値型だとsplit出来ないのでStringに変換してから。
      let text_split = String(values[i][j]).split('');

      // 置換後の文字を入れておく変数を用意
      let text_converted = [];

      // セル内の文字を1文字ずつ変換していく
      for (let i = 0; i < text_split.length; i++) {

        // 数字が半角リストの何番目にマッチするか探し、その同じkeyの全角数字を取得
        let char_converted = zenkaku[hankaku.indexOf(text_split[i], 0)];

        if (char_converted == null) {
          // ヒットしなかった場合は変換せずにそのまま追加する
          text_converted.push(text_split[i])

        } else {
          // ヒットした場合は変換後の全角数字を追加する
          text_converted.push(char_converted);

        }
      }

      // 変換後文字列が入った配列を連結する
      values[i][j] = text_converted.join('');
    }
  }

  // セルへ書き込む
  range.setValues(values);

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp