全角を半角に一括で変更するスプレッドシートのスクリプトが便利

全角を半角に一括で変更するスプレッドシートのスクリプトが便利
ルーキーくん
Googleスプレッドシートで全角英数を半角に一気に変更したいのですがいい方法はありますか?

今回のエントリーでは全角英数字を半角英数字に一括で変更するスプレッドシートのスクリプトを紹介していきます。

この記事の内容
・Google Apps Scriptを使って英数全角を半角に一括で変更する方法

こんな人が書いています

exp

Macユーザー歴20年超のめんどくさがりインハウスデザイナー。
Macでも無料で使えるスプレッドシートの使い方
無料で使えるアプリなどを紹介


ルーキーくん
先輩、クライアントの支給のエクセルのテキスト素材が微妙に全角半角が揃ってなかったり、末尾にスペースがあったりするんですけど、そういうときってどうしてます。データ形式はエクセルなんですけど。
デザインさん
スプレッドシート上でデータ整えるかな。
ルーキーくん
スプレッドシートってグーグルのエクセルみたいなやつですよね?
デザインさん
そうそう。無料で使えるんだけど、正規表現とか使えたりするから便利なんだよね。で、全角半角の揃えだっけ?
ルーキーくん
そうなんですよ。制作案件なんですけど、支給データの品番やら品名やらの英数字の全角半角が揃ってないんですよね。。。
デザインさん
あ〜、よくあるやつだな。それ。それなら、スプレッドシートの全角半角を一括で変更できるスクリプトを教えたげるよ。
ルーキーくん
まじっすか?そんな便利なのあるんですか?

今回は備忘録も兼ねて、グーグルスプレッドシートで全角英数字を半角英数字に一括で変更するスクリプトを紹介します。

Macで表計算ソフトを使おうとすると定番のエクセルは、有料になってしまうんですね。

そのため、無料で使えてエクセルデータとも親和性が高いGoogleスプレッドシートが使いやすいので、私は仕事で使う表計算ソフトは主にGoogle スプレッドシートを使っています。

今回はそんなGoogle スプレッドシートを使う時に知っていると便利な「英数字の全角のデータを簡単に半角に一括で変更できるスクリプト」を作成し使う方法をご紹介します。

英数字の全角を半角に変更できるスクリプトの使いどころ

今回紹介するスクリプトの使いどころとしては、

「クライアントや社内営業から送付されたデータに全角半角が混在している」

というときにデータを整形するのに便利です。1〜10個程度のリストであれば、このようなスクリプトに頼らなくてもサクッと修正できますが、規模の大きい商品カタログのような、300や500以上のものリストとなると全角 → 半角に変換するのも時間がかかってしまいます。ましてやイラストレーター上に配置してからの修正となるともっと時間がかかっていまいますね。

そんなときにスプレッドシート上で一括でサクッと変換できるこのスクリプトが大活躍します。

英数字の全角を半角に変更できるスクリプト

今回紹介するスクリプトは全角の英数字を半角の英数字に一括で変更できるスクリプトです。このGoogleのスクリプトは通称GAS(Google Apps Script)と呼ばれ、Googleのアカウントを持っていれば誰でも無料で使用することができます。

今回のスクリプトは、プログラムが一切わからない方でもコピペで使用できるので、ノンプログラマーの方も安心して使用することができます。

後ほど紹介する手順をそのままなぞればOKなのでぜひチャレンジしてみてください。

全角を半角に変更するにはASC関数もあるが・・・

今回処理を希望するような全角を半角に変更する方法として、GoogleスプレッドシートのASC関数という関数もあります。が、この関数を使用すると英数字以外の文字、つまり全角のカタカナなども半角に変更してしまうのです。

たとえばASC関数を使うと

MAC 0524 グラフィックデザインの新しい教科書

という文字列が

MAC 0524 グラフィックデザインの新しい教科書

へと変更されてしまいます。英数字については半角に変更したいのだけど、カタカナは半角にしたくないというケースは多いかと思いますが、そうなるとASC関数は希望のデータ処理にはなりません。

そこで使えるのが今回紹介するスクリプト。このスクリプトは英数字のみを全角から半角に変換することができます。

スクリプトの使用手順

このスクリプトの作成と使用手順を下記にまとめました。

1.まずはGoogleスプレッドシートの全角を半角に変更したいファイルを開きます。(今回はサンプルでこちらのファイルを使用します)。下記のとおり英数字は全角になっています。

2.ツールからスクリプトエディタを選択します。

3.Apps Scriptの画面が開かれます。

4. まずプロジェクト名を変更します。「無題のプロジェクト」となっているところをクリックすればプロジェクト名を変更できます。

5.下記のスクリプトをペーストして保存します。

↓ペーストするスクリプト

var App = SpreadsheetApp; var sheet = App.getActiveSheet(); var regex = /[A-Za-z0-9]/g; var convertFullToHalf = function () { var lastRow = sheet.getLastRow(); var lastColumn = sheet.getLastColumn(); var targetCells = []; var allCells = sheet.getRange(1, 1, lastRow, lastColumn).getValues(); for (var i = 0; i < lastRow; i++) { for (var j = 0; j < lastColumn; j++) { var cell = String(allCells[i][j]); var target = convertCharacters(cell); if (target !== null && target !== undefined && target !== ”) { targetCells.push({ value: target, row: i + 1, column: j + 1, }); } } } for (var k in targetCells) { var row = targetCells[k].row; var column = targetCells[k].column; var value = targetCells[k].value; sheet.getRange(row, column).setValue(value); } }; var convertCharacters = function (string) { if (string.match(regex) === null || string.slice(0, 1) === ‘=’) { return; } return string.replace(regex, function (s) { return String.fromCharCode(s.charCodeAt(0) – 0xfee0); }); };

6. 承認を求められるので、承認プロセスを進めます。

Googleアカウントの選択を求められます。

このアプリはGoogleで確認されていません。と表示が出るので詳細をクリック。

詳細をクリックした下に出てくるスクリプト名(安全ではないページ)に移動をクリックします。

Googleアカウントへのアクセスをリクエストしています、と表示されるので許可をクリック。

実行ログに実行完了と表示されればスクリプトが使用完了です。このスプレッドシート に対しては以降このスクリプトを使用する時には承認のフローは必要ありません。

7. スクリプトの実行が完了です。データをみると全角英数が半角に変更されています。

以上が全角を半角に変換するスクリプトの作り方とその手順でした。

ここで作成したスクリプトは「コンテナバインドスクリプト」と呼ばれるものでスプレッドシートやドキュメント、フォームといった親ファイルに紐づく形で保存される形式のスクリプトプロジェクトです。そのため呼び出す時は親元のファイル(今回でいうと全角、半角変換というスプレッドシート のデータ)を立ち上げてツールからスクリプトを選ぶか「Apps Script dashboard」にアクセスします。「Apps Script dashboard」には下記のURLからアクセスすることができます。

まとめ

今回は全角英数字を半角に変更するスクリプトの紹介でした。

全角英数を半角に変換する方法は他にもいろいろあるかと思いますが、一括でサクッと変更できるこの方法はかなり便利で助かっています。

仕事で、全角半角が入り混じったファイルを扱うことが多く、イラレでいじる前にできるだけデータを整えておきたいときなんかにホント助かっていますね。

ちなみに今回のスクリプトはこちらのサイトから情報をいただき使わせていただきました。

スプレッドシートでスクリプトを使った処理は結構便利なものが多いので、また別の機会に時短につながるスクリプトを紹介していきます。

それでは、今回はこのへんで。

ABOUTこの記事をかいた人

現場のグラフィックデザイナーに有用なリアルな技術やスキルアップの方法などを発信しています。 デザイン制作会社に8年→現在は都内にある日用品メーカーのグラフィック系インハウスデザイナーとして7年(総デザイナー歴15年)。そのかたわらフリーでデザインをしています。ラクにできるところはラクに!という時短デザインを推奨しています