選択範囲の「半角カタカナ」を「全角カタカナ」に変換するGoogle Apps Scriptです。
特にありません。今お使いのスプレッドシートに組み込めます。
半角カタカナのサンプルを用意しました。
このスクリプトは選択範囲のセルに対して動作します。変換したい範囲を選択しておきます。
上のメニューにある「スクリプト実行」から「半角カタカナを全角カタカナに変換する」を実行します。
「選択範囲にある「半角カタカナ」を「全角カタカナ」に変換します。入力されている数式は失われる場合があります。よろしいですか?」と聞かれますので、問題なければOKを押します。
キャンセルを押した場合はスクリプトが終了します。
半角カタカナが撲滅されました!
全角には変換されているのですが、手入力した全角カタカナと比べると幅が広いんですよね。
しかもLENで調べるとなんと濁点も1文字としてカウントされて10文字という扱いに。
予想外の結果なんですが、原因がわからず・・・分かり次第修正します。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00116/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi();
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('半角カタカナを全角カタカナに変換する', 'convert_katakana_hankaku_to_zenkaku');
// メニューを画面に追加する
menu.addToUi();
}
function convert_katakana_hankaku_to_zenkaku() {
// UIを取得
const ui = SpreadsheetApp.getUi();
// 実行を確認する
const response = ui.alert('選択範囲にある「半角カタカナ」を「全角カタカナ」に変換します。\n入力されている数式は失われる場合があります。\nよろしいですか?', ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたらスクリプトを終了する
if (response == ui.Button.CANCEL) {
return;
}
// 現在開いているスプレッドシートオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 開いているシートオブジェクトを取得
const sheet = ss.getActiveSheet();
// 変換用の半角カタカナリストを準備
const hankaku = ['ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ', 'ン', 'ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ヴ', 'ー'];
// 変換用の全角カタカナリストを準備
const zenkaku = ['ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ', 'ン', 'ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ヴ','−'];
// 選択中のrangeオブジェクトを取得
const range = sheet.getActiveRange();
// 選択中セルの値を取得
const values = range.getValues();
// 取得したセルを1つずつループして変換していく
for (let i = 0; i < values.length; i++) { // 行のループ
for (let j = 0; j < values[i].length; j++) {// 列のループ
// セルの文字1文字ずつ分割して配列にする。数値型だとsplit出来ないのでStringに変換してから。
let text_split = String(values[i][j]).split('');
// 置換後の文字を入れておく変数を用意
let text_converted = [];
// セル内の文字を1文字ずつ変換していく
for (let i = 0; i < text_split.length; i++) {
// 文字が半角リストの何番目にマッチするか探し、その同じkeyの全角カタカナを取得
let char_converted = zenkaku[hankaku.indexOf(text_split[i], 0)];
if (char_converted == null) {
// ヒットしなかった場合は変換せずにそのまま追加する
text_converted.push(text_split[i])
} else {
// ヒットした場合は変換後のカタカナを追加する
text_converted.push(char_converted);
}
}
// 変換後文字列が入った配列を連結する
values[i][j] = text_converted.join('');
}
}
// セルへ書き込む
range.setValues(values);
}
1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。行方向に分割します。
1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。列方向に分割します。
選択範囲の「ひらがな」を「カタカナ」に変換するGoogle Apps Scriptです。ルビやフリガナを平仮名で書いてしまったけどやっぱり片仮名にしたくなったときにどうぞ。
選択範囲の「カタカナ」を「ひらがな」に変換するGoogle Apps Scriptです。ひらがな→カタカナを作ったので逆バージョンも作ってみました。
全角で入力された数字を半角の数字に変換するGoogle Apps Scriptです。全角半角が入り混じったデータを半角に揃えたいときにどうぞ。
半角で入力された数字を全角の数字に変換するGoogle Apps Scriptです。全角→半角版を作ったので逆バージョンも作りました。全角にしたい人は・・・少なそうな気もしますが・・・