表ソフトで名前の順に並べたいとき、
漢字の名前をそのままソートすると、
下の図のように狙い通りの順番になってくれません。
「やすだ」さんは「や」行なので、
一番後ろにきてほしいのですが、
同じ「安」の漢字の「安倍」さんと並んでソートされます。
ふりがなのデータもあれば、
ふりがなでソートすれば良いのですが、
データがない場合に手動で入力していくのは骨が折れます。
そこで、スクリプトを組んで、
Google スプレッドシートにふりがなソートの機能を追加してみましょう。
準備
漢字のふりがなを生成するために、
gooラボで提供されている「ひらがな化API」を利用します。
APIの利用には、
1. GitHubのアカウント作成
1. gooラボAPI利用登録
が必要です。
また登録完了時に表示されるアプリケーションIDを記録しておきましょう。
スクリプトの作成
ふりがなソートを行いたいスプレッドシートから、
スクリプトエディタを開き、
スクリプトを記述していきます。
大まかな流れとしては、
1. gooラボAPIを利用してふりがなを生成
1. ふりがな順にソート
1. 生成したふりがなを削除
を自動的に実行することで、
ふりがなソートを実現します。
API を呼び出す関数
APIを利用してふりがなを取得する関数を定義します。
output_type
に"hiragana"
か"katakana"
を指定することで、
sentence
で与えた文字列を平仮名またはカタカナに変換します。
GOO_API_ID
にはAPI利用登録時のアプリケーションIDを指定します。
GOO_API_ID = "**********************" var goo_hiragana = function(output_type, sentence) { if(sentence == "") return "" var endpoint = "https://labs.goo.ne.jp/api/hiragana"; var payload = { "app_id": GOO_API_ID, "sentence": sentence, "output_type": output_type }; var options = { "method": "post", "payload": payload }; var res = UrlFetchApp.fetch(endpoint, options); var json = JSON.parse(res.getContentText()); return json.converted; };
ふりがなを生成する関数
下の関数ではcol
で指定した列の各セルについて、
ふりがなを生成して、最後尾の列に記入します。
function gen_hurigana(sheet,col){ var nrow = sheet.getLastRow() var ncol = sheet.getLastColumn() var X = sheet.getRange(1,col,nrow).getValues() for(var i = 0;i<nrow;i++){ X[i][0] = goo_hiragana("hiragana",X[i][0]) } sheet.getRange(1,ncol+1,nrow).setValues(X) }
ふりがなソートの実行
gen_hurigana
を利用して、
ふりがなを生成した後、
ふりがなでソートして、
最後に利用したふりがなを削除します。
これでふりがなソートの完成です。
function myFunction() { var ss = SpreadsheetApp.getActive() var s = ss.getActiveSheet() gen_hurigana(s,s.getActiveRange().getColumn()) s.sort(s.getLastColumn()) s.getRange(1, s.getLastColumn(),s.getLastRow()).clear() }
メニューの追加
ソートの度にmyFunction
をスクリプトエディタを開くのは面倒なので、
スプレッドシートのメニューにふりがなソートを追加しておきます。
スプレッドシートを開いた時に呼び出されるonOpen
関数内で、
メニューの追加を行います。
function onOpen() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu('ユーザー機能'); menu.addItem('ふりがなソート', 'myFunction'); menu.addToUi(); }
利用方法
ソートの基準となる列にカーソルを合わせて、
上部のメニューから「ユーザー機能」→「ふりがなソート」
を選択します。
すると、下の図のようにソートが実行されました。
「あべ」「うえはら」「ささき」・・・
と正しく名前の順にソートされていることがわかります。
まとめ
スプレッドシート内の漢字の列を
ふりがな順でソートするスクリプトを紹介しました。
標準機能としてあってもおかしくないような機能ですが、
ないものは自分で作るしかないですね。