Google Apps Scriptで全角半角を楽々判定する方法とは?
GASで全角と半角を判定する方法を探しているんですが、どうやって始めたらいいのか全然わからなくて…

猫男

catman
よし、catmanに任せな!
GASで全角半角を判定する基本
全角と半角の判定は、文字コードを利用して行うことができます。これは正規表現を使うと便利だ。
正規表現を使った全角と半角の判定
GASで正規表現を使い、文字列が全角か半角かを判定する方法を紹介する。
function isFullWidth(text) {
return /[^\x00-\x7F]/.test(text);
}
function isHalfWidth(text) {
return /^[\x00-\x7F]*$/.test(text);
}
このスクリプトの仕組み
- isFullWidth関数は全角判定を行います。正規表現で「[^\\x00-\\x7F]」を使って、文字列に1つでも全角文字が含まれているかを検査します。
- isHalfWidth関数は半角判定を行います。「^[\\x00-\\x7F]*$」の正規表現を使って、文字列が全て半角文字で構成されているかをチェックします。
これで、全角と半角を区別できるんですね!でも、もう少し詳しく知りたいです。

猫男
実践的な使い方
次はこいつを応用してみます。
スプレッドシートでの応用
スプレッドシートの特定のカラムをチェックし、全角と半角を分けて処理したい場合に使えます。
function checkColumn() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getRange("A1:A10");
const values = range.getValues();
values.forEach((row, index) => {
const cellValue = row[0];
if (isFullWidth(cellValue)) {
Logger.log(Row ${index + 1}: 全角);
} else if (isHalfWidth(cellValue)) {
Logger.log(Row ${index + 1}: 半角);
} else {
Logger.log(Row ${index + 1}: 混在);
}
});
}
スクリプトの解説
- まず、SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()で現在開いているスプレッドシートのアクティブシートを取得します。
- getRange(“A1:A10”)で、A1からA10までのセル範囲を指定します。
- getValues()を使って、選択された範囲の値を二次元配列で取得します。
- 各行の最初のセルの値を、先ほどのisFullWidthやisHalfWidth関数で判定し、結果をログに出力します。
これでスプレッドシートのデータを全角と半角に分けて処理できそうです!うれしい!

猫男
練習問題
スプレッドシートの「B列」に入力されたデータを全角か半角で判定し、C列に結果をセットするスクリプトを書いてください。
解答・解説
function checkAndSetColumn() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const dataRange = sheet.getRange("B1:B10");
const values = dataRange.getValues();
const resultRange = sheet.getRange("C1:C10");
const results = [];
values.forEach(row => {
const text = row[0];
if (isFullWidth(text)) {
results.push(["全角"]);
} else if (isHalfWidth(text)) {
results.push(["半角"]);
} else {
results.push(["混在"]);
}
});
resultRange.setValues(results);
}
このスクリプトの説明
- getRange(“B1:B10”)でデータが入力されている範囲を指定し、getValues()でその範囲のデータを取得します。
- 判定結果を入れるために、C列の範囲を
getRange("C1:C10")
で指定し、結果を保存するために配列を用意します。
- それぞれの行について全角・半角の判定を行い、結果をC列のデータ範囲に
setValues(results)
でセットします。

catman
こんな感じでGASを活用して、全角半角を判定しよう!しっかり練習してマスターするのだ!