Googleスプレッドシートで半角カタカナを全角カタカナに変換する関数「f7conv」をGASで作る

概要

  • Googleスプレッドシート上で「半角カタカナ」を「全角カタカナ」に変換したくなった。
  • 色々探したが、先人が作成したものは「ガ」などの濁音の変換時に「カ」と「濁点」に分割されてしまい、そのまま使用できなかった。
  • 以下のエントリーで公開されているソースを元に、半角カタカナ→全角カタカナ変換だけを行う関数に改造させていただいた。

ソース

  • 参考ソースでは、半角・全角カタカナのリストに記号類が含まれていないため、以下を末尾に追加。
    • 長音記号:
    • 中黒:
    • 句点:
    • 読点:
  • 関数名は、F7キーによる全角カタカナ変換にちなんで f7conv とした。
//全角カタカナ一覧
var zenkata = [
"ア", "イ", "ウ", "エ", "オ",
"カ", "キ", "ク", "ケ", "コ",
"サ", "シ", "ス", "セ", "ソ",
"タ", "チ", "ツ", "テ", "ト",
"ナ", "ニ", "ヌ", "ネ", "ノ",
"ハ", "ヒ", "フ", "ヘ", "ホ",
"マ", "ミ", "ム", "メ", "モ",
"ヤ", "ユ", "ヨ",
"ラ", "リ", "ル", "レ", "ロ",
"ワ", "ヲ", "ン",
"ガ", "ギ", "グ", "ゲ", "ゴ",
"ザ", "ジ", "ズ", "ゼ", "ゾ",
"ダ", "ヂ", "ヅ", "デ", "ド",
"バ", "ビ", "ブ", "ベ", "ボ",
"パ", "ピ", "プ", "ペ", "ポ",
"ァ", "ィ", "ゥ", "ェ", "ォ",
"ャ", "ュ", "ョ",
"ッ", "ヴ",
"ー", "・", "。", "、"];

//半角カタカナ一覧
var hankata = [
"ア", "イ", "ウ", "エ", "オ",
"カ", "キ", "ク", "ケ", "コ",
"サ", "シ", "ス", "セ", "ソ",
"タ", "チ", "ツ", "テ", "ト",
"ナ", "ニ", "ヌ", "ネ", "ノ",
"ハ", "ヒ", "フ", "ヘ", "ホ",
"マ", "ミ", "ム", "メ", "モ",
"ヤ", "ユ", "ヨ",
"ラ", "リ", "ル", "レ", "ロ",
"ワ", "ヲ", "ン",
"ガ", "ギ", "グ", "ゲ", "ゴ",
"ザ", "ジ", "ズ", "ゼ", "ゾ",
"ダ", "ヂ", "ヅ", "デ", "ド",
"バ", "ビ", "ブ", "ベ", "ボ",
"パ", "ピ", "プ", "ペ", "ポ",
"ァ", "ィ", "ゥ", "ェ", "ォ",
"ャ", "ュ", "ョ",
"ッ", "ヴ",
"ー", "・", "。", "、"];

//関数を作成
function f7conv(string) {
	//最終的に返す変数を定義
	var result = '';
	
	//変換する対象文字列をセット
	var input = hankata;
	var output = zenkata;

	//引数で渡された文字を分割
	var text = string.split('');
	
	//文字を再格納する配列を定義
	var array = [];
	//分割した文字の数だけループを回し、もし濁点・半濁点だった場合は1つ前の配列の中身とセットにして array に格納
	for (var i = 0; i < text.length; i++) {
		if (text[i] == "゙" || text[i] == "゚") {
			array[array.length - 1] = (text[i - 1] + text[i]);
		} else {
			array.push(text[i]);
		}
	}

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

	//結果を返す
	return result;
}

導入方法

  1. スプレッドシートを新規作成
  2. ツール > スクリプトエディタ を開く
  3. スクリプトの編集画面が開くので、上記ソースをペーストして保存
  4. シートに戻り、関数を使用

関数の使い方

=f7conv("スーパーカリフラジリスティックエクスピアリドーシャス")

f7conv関数の使用例

  • 通常のスプレッドシートの関数と同様、上記のように引数に文字列を渡す。
=f7conv(A1)

f7conv関数の使用例

  • セルを参照することも可能。

注意点

  • 渡された文字を1つずつ区切って置換する、という仕組み上、引数に関数を渡すことは出来ない。
=f7conv(ASC("スーパーカリフラジリスティックエクスピアリドーシャス"))
  • なので、上記のような書き方では動かない。
    • 例:全角カタカナをASC関数で半角カタカナに変換。更にf7conv関数で全角カタカナに戻す。

Comments

  • スパム対策のため、コメント本文にURLが含まれている場合は「承認待ち」となり、すぐに投稿が反映されません。ご了承ください。
  • 公序良俗に反する内容、個人が特定できる情報、スパム投稿と思われるコメント等については、予告なく編集・削除する場合があります。