概要
- Googleスプレッドシート上で「半角カタカナ」を「全角カタカナ」に変換したくなった。
- 色々探したが、先人が作成したものは「ガ」などの濁音の変換時に「カ」と「濁点」に分割されてしまい、そのまま使用できなかった。
- 以下のエントリーで公開されているソースを元に、半角カタカナ→全角カタカナ変換だけを行う関数に改造させていただいた。
ソース
- 参考ソースでは、半角・全角カタカナのリストに記号類が含まれていないため、以下を末尾に追加。
- 関数名は、F7キーによる全角カタカナ変換にちなんで
f7conv
とした。
- Gist版は以下リンクを参照。
//全角カタカナ一覧
const zenkata = [
'ア', 'イ', 'ウ', 'エ', 'オ',
'カ', 'キ', 'ク', 'ケ', 'コ',
'サ', 'シ', 'ス', 'セ', 'ソ',
'タ', 'チ', 'ツ', 'テ', 'ト',
'ナ', 'ニ', 'ヌ', 'ネ', 'ノ',
'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
'マ', 'ミ', 'ム', 'メ', 'モ',
'ヤ', 'ユ', 'ヨ',
'ラ', 'リ', 'ル', 'レ', 'ロ',
'ワ', 'ヲ', 'ン',
'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ',
'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
'バ', 'ビ', 'ブ', 'ベ', 'ボ',
'パ', 'ピ', 'プ', 'ペ', 'ポ',
'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
'ャ', 'ュ', 'ョ',
'ッ', 'ヴ',
'ー', '・', '。', '、'];
//半角カタカナ一覧
const hankata = [
'ア', 'イ', 'ウ', 'エ', 'オ',
'カ', 'キ', 'ク', 'ケ', 'コ',
'サ', 'シ', 'ス', 'セ', 'ソ',
'タ', 'チ', 'ツ', 'テ', 'ト',
'ナ', 'ニ', 'ヌ', 'ネ', 'ノ',
'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
'マ', 'ミ', 'ム', 'メ', 'モ',
'ヤ', 'ユ', 'ヨ',
'ラ', 'リ', 'ル', 'レ', 'ロ',
'ワ', 'ヲ', 'ン',
'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ',
'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
'バ', 'ビ', 'ブ', 'ベ', 'ボ',
'パ', 'ピ', 'プ', 'ペ', 'ポ',
'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
'ャ', 'ュ', 'ョ',
'ッ', 'ヴ',
'ー', '・', '。', '、'];
//関数を作成
function f7conv(text) {
//最終的に返す変数を定義
let result = '';
//変換する対象文字列をセット
const input = hankata;
const output = zenkata;
//引数に値が格納されているかチェック
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;
}
導入方法
- スプレッドシートを新規作成
- ツールバー > 拡張機能 > Apps Script を開く
- スクリプトの編集画面が開くので、上記ソースをペーストして保存
- シートに戻り、関数を使用
関数の使い方
=f7conv("スーパーカリフラジリスティックエクスピアリドーシャス")
- 通常のスプレッドシートの関数と同様、上記のように引数に文字列を渡す。
=f7conv(A1)
注意点
- 渡された文字を1つずつ区切って置換する、という仕組み上、引数に関数を渡すことは出来ない。
=f7conv(ASC("スーパーカリフラジリスティックエクスピアリドーシャス"))
- なので、上記のような書き方では動かない。
- 例:全角カタカナをASC関数で半角カタカナに変換。更にf7conv関数で全角カタカナに戻す。
参考リファレンス
- Google Apps Script
- JavaScript
更新履歴
- 2022-10-29 コメントでの指摘を受けてソースを更新しました。
- 引用符をシングルクォーテーションに統一
var
を let
または const
に書き換え
- 引数のエラーチェックを追加