GASで半角文字を全角文字に変換するJIS関数を作る方法

スプレッドシート

ExcelではJIS関数を使えば半角文字を全角文字に変換できますが、スプレッドシートにはJIS関数がありません。

全角文字を半角文字に変換するASC関数はスプレッドシートにもあるのに、どうしてなんでしょうか…

Googleスプレッドシートで半角文字を全角文字に変換するには、GAS(Google Apps Script)を使う必要があります。

仕事の関係でスプレッドシートでJIS関数を使いたかったので、GASで作ってみました。

カタカナの全角半角を半角文字に変換できる関数を作っている記事があったので、参考に英数字も全角にできるようにアレンジしました。

↓こちらは参考記事

コピペ用コード

早速ですがコードを貼っておきます。

スプレッドシートの「拡張機能」→「Apps Script」を開き、貼り付けて「実行」を押すだけでOKです。

//全角一覧
const zenkaku = [
  'ア', 'イ', 'ウ', 'エ', 'オ',
  'カ', 'キ', 'ク', 'ケ', 'コ',
  'サ', 'シ', 'ス', 'セ', 'ソ',
  'タ', 'チ', 'ツ', 'テ', 'ト',
  'ナ', 'ニ', 'ヌ', 'ネ', 'ノ',
  'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
  'マ', 'ミ', 'ム', 'メ', 'モ',
  'ヤ', 'ユ', 'ヨ',
  'ラ', 'リ', 'ル', 'レ', 'ロ',
  'ワ', 'ヲ', 'ン',
  'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
  'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ',
  'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
  'バ', 'ビ', 'ブ', 'ベ', 'ボ',
  'パ', 'ピ', 'プ', 'ペ', 'ポ',
  'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
  'ャ', 'ュ', 'ョ',
  'ッ', 'ヴ',
  'ー', '・', '。', '、', ' ',
  '0', '1', '2', '3', '4',
  '5', '6', '7', '8', '9',
  'a', 'b', 'c', 'd', 'e',
  'f', 'g', 'h', 'i', 'j',
  'k', 'l', 'm', 'n', 'o',
  'p', 'q', 'r', 's', 't',
  'u', 'v', 'w', 'x', 'y',
  'z',
  'A', 'B', 'C', 'D', 'E',
  'F', 'G', 'H', 'I', 'J',
  'K', 'L', 'M', 'N', 'O',
  'P', 'Q', 'R', 'S', 'T',
  'U', 'V', 'W', 'X', 'Y',
  'Z',
];

//半角一覧
const hankaku = [
  'ア', 'イ', 'ウ', 'エ', 'オ',
  'カ', 'キ', 'ク', 'ケ', 'コ',
  'サ', 'シ', 'ス', 'セ', 'ソ',
  'タ', 'チ', 'ツ', 'テ', 'ト',
  'ナ', 'ニ', 'ヌ', 'ネ', 'ノ',
  'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
  'マ', 'ミ', 'ム', 'メ', 'モ',
  'ヤ', 'ユ', 'ヨ',
  'ラ', 'リ', 'ル', 'レ', 'ロ',
  'ワ', 'ヲ', 'ン',
  'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
  'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ',
  'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
  'バ', 'ビ', 'ブ', 'ベ', 'ボ',
  'パ', 'ピ', 'プ', 'ペ', 'ポ',
  'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
  'ャ', 'ュ', 'ョ',
  'ッ', 'ヴ',
  'ー', '・', '。', '、', ' ',
  '0', '1', '2', '3', '4',
  '5', '6', '7', '8', '9',
  'a', 'b', 'c', 'd', 'e',
  'f', 'g', 'h', 'i', 'j',
  'k', 'l', 'm', 'n', 'o',
  'p', 'q', 'r', 's', 't',
  'u', 'v', 'w', 'x', 'y',
  'z',
  'A', 'B', 'C', 'D', 'E',
  'F', 'G', 'H', 'I', 'J',
  'K', 'L', 'M', 'N', 'O',
  'P', 'Q', 'R', 'S', 'T',
  'U', 'V', 'W', 'X', 'Y',
  'Z',
];

//関数を作成
function JIS(text) {
  //最終的に返す変数を定義
  let result = '';

  //変換する対象文字列をセット
  const input = hankaku;
  const output = zenkaku;

  //引数に値が格納されているかチェック
  if (typeof text === 'undefined') {
    result = 'エラー:全角カタカナに変換する文字列が指定されていません。';
  } else {
    //引数で渡された文字列を定数にセット
    const textStr = text;

    //1文字ずつ分割して配列に格納
    const textArr = textStr.split('');

    //文字数が0でなければ実行
    if (textArr.length !== 0) {
      //文字を再格納する配列を定義
      let array = [];

      //分割した文字の数だけループを回し、もし濁点・半濁点だった場合は1つ前の配列の中身とセットにして array に格納
      for (let i = 0; i < textArr.length; i++) {
        if (textArr[i] == '゙' || textArr[i] == '゚') {
          array[array.length - 1] = (textArr[i - 1] + textArr[i]);
        } else {
          array.push(textArr[i]);
        }
      }

      //再格納した文字の数だけループを回し、もし半角カナがあったら全角カナに直して result へ格納
      for (let j = 0; j < array.length; j++) {
        let index = input.indexOf(array[j]);
        if (index == -1) {
          result = result + array[j];
        } else {
          result = result + output[index];
        }
      }
    }
  }

  //結果を返す
  return result;
}

使い方

ExcelのJIS関数とまったく同じように使えます。

全角文字を出力するセルに =JIS(半角文字のセル)を入力するだけです。

例えば、B2セルの半角文字をC2セルに全角文字で出力したい場合は下のように入力します。

読み込みのために、Loading…と表示されますが、数秒後にB2の半角文字が、C2に全角文字として表示されます。

オートフィルで式をC6までコピーすれば、B列の半角文字を一気に全角文字に変換できました。

おまけ

毎回JIS関数を入力するものめんどくさい!という方は下のコードを追加で貼り付けすれば、スプレッドシートを開くタイミングで勝手に変換してくれます。

const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadSheet.getSheetByName('シート名'); //'シート名'は実際のシート名に合わせて変更してください。
const nameList = sheet.getRange('A2:A').getValues().flat(); //'A2:A'は半角文字が入力されている列に合わせて変更してください。

const nameNumber = nameList.length;

function onOpen() {
  for (i = 0; i < nameNumber; i++) {
    const zenkakuName = JIS(nameList[i]);
    sheet.getRange(i + 2, '列番号').setValue(zenkakuName); //'列番号'は全角文字を出力したい列の番号に変更してください。

  }
}

仕事では半角の名前を全角にすることが多いので、「name」という単語 を使っていますが、名前以外も変換可能です。

また、データの1行目は見出しであることが多く、見出しを変換する必要はないと思うので、2行目からを変換の対象にしています。

列番号は数字で指定してください。(C列の場合は3)

普通の人であれば、半角を全角にしたいシーンはそれほど多くないかもしれませんが、僕は仕事で外国人の名前を扱うことが多く、全角・半角を統一したいことがよくあるのでこの機能を作りました。

ExcelのJIS関数があればこんなことをする必要もないんですが、一度この機能を設定してしまえばJIS関数とまったく同じ使い方ができるので便利ですね。

「よくわからないから全部やってほしい!」という方はココナラで注文いただくか、問い合わせ・Twitterからご相談ください。

スプレッドシートにJIS関数を導入します 半角文字を全角文字に変換できるようになります

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール