【GAS】半角文字列を全角文字列に変換する方法(JIS関数)

応用

GAS応用の一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【初めてのGAS 1.】セルの値を操作する
初めてのGAS一覧 Googleシートマスターのひろしです。 前回 GAS触ってみていかがでしたか? 今回は、さらにスプレッドシート内の セルの値を操作してみたいと思います。 これを知ることであな...

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

  • GAS(Google Apps Script)を使い、あなた独自のスプレッドシート関数が作れてしまいます。
  • 半角文字列を全角文字列に変換できる関数が作れます。

なので、こんな風に「半角文字」を
「全角文字」に変換できちゃいます。

 

 

逆に、知らないと

あなた:「さーて、半角文字を全角文字に変換しようかな。」

あなた:「えーと、なんて関数だったかな?」

あなた:「JISだったかな・・・・・・」

あなた:「あれ???? ないやん」

てなことになります。

Excelには、JIS関数と言って「半角から全角」に
変換する関数があるのですが、残念ながら
スプレッドシートには「半角から全角」に変換する
関数がないのです。

でも、諦めないでください。

ちょっと手を伸ばせば、そこに全く新しい
世界があります。

なので、ぜひ自作関数にチャレンジして
みてください。

そして、

こんな風に答えてみてください。

ちなみに全角→半角変換は、
=ASC()
という関数でできます。

 

 

 

では、動画です。

動画はこちら

【GAS】スプレッドシートで初心者がいきなりExcelのJIS関数(半角文字列を全角文字列に変換する)を作成する

動画で使用したシート

動画で使用したスクリプト

/**
半角文字列を全角文字列に変換する関数 myJIS
*
* @param {string} 半角文字列
* @return {string} 全角文字列
* @customfunction
*/
function myJIS(str) {

  str = toFullWidth(str);//英数字を半角から全角に変換
  
  str = kana2upper(str);//半角カナを全角カナにする

  return(str);
}




//半角から全角に変換
function toFullWidth(value) {
  if (!value) return value;
  return String(value).replace(/[!-~]/g, function(all) {
    return String.fromCharCode(all.charCodeAt(0) + 0xFEE0);
  });
}


//半角カナを全角カナにする
function kana2upper(string) {

	var arrayedString = string.split('');
	var value = '';

	var triTable = {
	};
	var biTable = {  
	};
/**
 * 半角カタカナを全角カタカナに変換
 * 
 * @param {String} str 変換したい文字列
 */
	var uniTable = {
        'ガ': 'ガ', 'ギ': 'ギ', 'グ': 'グ', 'ゲ': 'ゲ', 'ゴ': 'ゴ',
        'ザ': 'ザ', 'ジ': 'ジ', 'ズ': 'ズ', 'ゼ': 'ゼ', 'ゾ': 'ゾ',
        'ダ': 'ダ', 'ヂ': 'ヂ', 'ヅ': 'ヅ', 'デ': 'デ', 'ド': 'ド',
        'バ': 'バ', 'ビ': 'ビ', 'ブ': 'ブ', 'ベ': 'ベ', 'ボ': 'ボ',
        'パ': 'パ', 'ピ': 'ピ', 'プ': 'プ', 'ペ': 'ペ', 'ポ': 'ポ',
        'ヴ': 'ヴ', 'ヷ': 'ヷ', 'ヺ': 'ヺ',
        'ア': 'ア', 'イ': 'イ', 'ウ': 'ウ', 'エ': 'エ', 'オ': 'オ',
        'カ': 'カ', 'キ': 'キ', 'ク': 'ク', 'ケ': 'ケ', 'コ': 'コ',
        'サ': 'サ', 'シ': 'シ', 'ス': 'ス', 'セ': 'セ', 'ソ': 'ソ',
        'タ': 'タ', 'チ': 'チ', 'ツ': 'ツ', 'テ': 'テ', 'ト': 'ト',
        'ナ': 'ナ', 'ニ': 'ニ', 'ヌ': 'ヌ', 'ネ': 'ネ', 'ノ': 'ノ',
        'ハ': 'ハ', 'ヒ': 'ヒ', 'フ': 'フ', 'ヘ': 'ヘ', 'ホ': 'ホ',
        'マ': 'マ', 'ミ': 'ミ', 'ム': 'ム', 'メ': 'メ', 'モ': 'モ',
        'ヤ': 'ヤ', 'ユ': 'ユ', 'ヨ': 'ヨ',
        'ラ': 'ラ', 'リ': 'リ', 'ル': 'ル', 'レ': 'レ', 'ロ': 'ロ',
        'ワ': 'ワ', 'ヲ': 'ヲ', 'ン': 'ン',
        'ァ': 'ァ', 'ィ': 'ィ', 'ゥ': 'ゥ', 'ェ': 'ェ', 'ォ': 'ォ',
        'ッ': 'ッ', 'ャ': 'ャ', 'ュ': 'ュ', 'ョ': 'ョ',
        '。': '。', '、': '、', 'ー': 'ー', '「': '「', '」': '」', '・': '・'
	};

	if(triTable[string] !== undefined){
        return triTable[string];
	} else if(biTable[string] !== undefined) {
        return biTable[string];
	}

    var biCheck = new Object();
    for (var k in biTable){
        var tmp = k.split('');
        biCheck[tmp[0]] = true;
    }

    var triCheck = new Object();
    for (var tk in triTable){
        var tmp = tk.split('');
        triCheck[tmp[0] + tmp[1]] = true;
        biCheck[tmp[0]] = true; 
    }
    

	var buf = '';
	for(var i = 0; i < arrayedString.length ; i++){
        var str = arrayedString[i];
        buf += str;
        if(buf.length == 3){
            if(triTable[buf] !== undefined){
                value += triTable[buf];
            } else {
                tmp = buf.split('');
                value += biTable[tmp[0] + tmp[1]];
                value += uniTable[tmp[2]] === undefined ? tmp[2] : uniTable[tmp[2]];
                
            }

        } else if(buf.length == 2) {
            if(triCheck[buf] !== undefined) { 
            } else if(biTable[buf] !== undefined) {
                    value += biTable[buf];
                    buf = '';
                } else {
                    tmp = buf.split('');
                    value += uniTable[tmp[0]]; 
                    value += uniTable[tmp[1]] === undefined ? tmp[1] : uniTable[tmp[1]]; 
                    buf = '';
                } 
        } else if(biCheck[buf] !== undefined){
        } else { 
                value += uniTable[str] === undefined ? str : uniTable[str];
                buf = '';
        }


        }

        value += buf !== '' ? uniTable[buf] : '';

    value = value.replace(/([aiueo])ー/gi,'$1');
	return value;
}

マインドセットします。

マインドセット
物事には必ず解決策がある

 

正直、スクリプトは意味不明だったと思います。
私も完全には理解できていません^^

でも、とにかくmyJIS()ってのを
スプレッドシートに入力するだけで
変換する事ができたと思います。

では、今回のGoogleシートマスターへの究極の方法です。

Step1.
スクリプトエディタを開く

Step2.

スクリプトをコピペする

Step3.

myJIS()を使ってみる

では、早速、スクリプトエディタを開いてください
今すぐです。

最後までご覧いただきありがとうございます。

つぎはこちら

【GAS30】指定した文字列をすべて置換する方法 replace
ご訪問ありがとうございます。 Googleシートマスターのひろしです。 前回の動画 今回は、とっても価値の高い方法をお伝えします。 これを知ることであなたは、 文字列の置換を...

 

GAS応用の一覧



参考サイト

アドオン「文字変換くん」

【Google スプレッドシート】表の中で全角と半角がバラバラ! 一括で統一する方法
 全角文字と半角文字が混在している表、ありますよね。複数人での入力や、他の表からコピー&ペーストした場合に起こりがちです。住所録などであれば、あるはずのデータが検索にヒットしなかったり、正しく並べ替えできなかったりと、データベースとして使う際に不都合です。また、計算式が含まれている表であれば、計算結果も正しく表示されま...

全角変換

Google Spreadsheet 半角から全角に変換 - Qiita
GAS.gs function toFullWidth(value) { if (!value) return value; return String(value).replace(//g, function(a...

全角カナ変換

google spreadsheet で半角カナを全角カナにする関数 kana2upper() を作成
google spreadsheet で半角カナを全角カナにする関数 kana2upper() を作成 - kana2upper.js.gs

 

コメント

  1. ゆるまる より:

    こんばんは
    YouTubeからきました。
    いつも興味深く拝見してます。
    これからも宜しくお願い致します。

    • hiroshi より:

      ゆるまるさん
      コメントありがとうございます。
      こちらこそよろしくおねがいします。

  2. 匿名 より:

    タイトルが違うので修正してください。。。
    「【GAS】全角文字列を半角文字列に変換する方法(JIS関数)」ではなく
    “半角”を”全角”にですよね。

タイトルとURLをコピーしました